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)