2016
Mar
11

Golang 的線上文件跟網路上的資料,實在是寫得很爛,而且文章又少,官方文件喜歡寫一堆 function definition ,卻只給少少範例,或是給不完整的範例,以下是我使用 golang 的過程中,記錄下來實做過的 golang 範例。

Request 中帶 cookie

Cookie
  1. import "fmt"
  2. import "net/http"
  3. import "strconv"
  4. import "io/ioutil"
  5. func main() {
  6. var userId int = 5
  7.  
  8. // Declare http client
  9. client := &http.Client{}
  10.  
  11. // Declare HTTP Method and Url
  12. req, err := http.NewRequest("GET", "http://localhost", nil)
  13.  
  14. // Set cookie
  15. req.Header.Set("Cookie", "stockId=" + strconv.Itoa(userId))
  16.  
  17. // Send request
  18. resp, err := client.Do(req)
  19.  
  20. // Read response
  21. data, err := ioutil.ReadAll(resp.Body)
  22.  
  23. // error handle
  24. if err != nil {
  25. fmt.Printf("error = %s \n", err);
  26. }
  27.  
  28. // Print response
  29. fmt.Printf("Response = %s", string(data));
  30. }

Query MySql

Query MySql 前,要先安裝 MySql driver ,安裝指令如下:

go get github.com/go-sql-driver/mysql
Example
  1. import _ "github.com/go-sql-driver/mysql"
  2. import "database/sql"
  3. import "fmt"
  4. import "os"
  5. import "log"
  6. func main () {
  7. db, err := sql.Open("mysql", "user:password@/dbName?charset=utf8");
  8. if err != nil {
  9. fmt.Println("error = %s", err);
  10. os.Exit(1);
  11. }
  12. ret, err := db.Query("select * from Person");
  13. if err != nil {
  14. log.Fatal(err);
  15. }
  16. for ret.Next() {
  17. var id int
  18. var email string
  19. if err := ret.Scan(&id, &email); err != nil {
  20. log.Fatal(err);
  21. }
  22. fmt.Printf("id=%d email=%s\n",id, email);
  23. }
  24. }

import local package / library

如果我要寫一個稍大一點的功能,共有 A, B 兩個檔案,A 要去 include B ,golang 的檔案結構很像 Java , 當 B 是一個 library 的話,那麼我們一定要建一個資料夾 B ,並在程式中定義 "package B",範例如下。

example/B/B.go
  1. package B
  2. func Sum(a int, b int) (int) {
  3. return a + b
  4. }
example/A.go
  1. package main
  2.  
  3. import "fmt"
  4. import "./B"
  5.  
  6. func main() {
  7. ret := B.Sum(1, 2);
  8. fmt.Printf("sum = %d \n\n", ret);
  9. }

Big5 UTF8 編碼轉換

先用 go get 自動從 github 上安裝 iconv 。


go get github.com/qiniu/iconv
Example
  1. package main
  2.  
  3. import "github.com/qiniu/iconv"
  4. import "fmt"
  5.  
  6. func main() {
  7. cd, _ := iconv.Open("UTF-8", "Big5");
  8. c := cd.ConvString("\xa6\x72");
  9. fmt.Printf("content = %s", c);

相關網站

下面幾個網站,都可以用來查詢 golang 語法。


回應 (Leave a comment)