Golang 的線上文件跟網路上的資料,實在是寫得很爛,而且文章又少,官方文件喜歡寫一堆 function definition ,卻只給少少範例,或是給不完整的範例,以下是我使用 golang 的過程中,記錄下來實做過的 golang 範例。
Request 中帶 cookie
Cookie
- import "fmt"
- import "net/http"
- import "strconv"
- import "io/ioutil"
- func main() {
- var userId int = 5
- // Declare http client
- client := &http.Client{}
- // Declare HTTP Method and Url
- req, err := http.NewRequest("GET", "http://localhost", nil)
- // Set cookie
- req.Header.Set("Cookie", "stockId=" + strconv.Itoa(userId))
- // Send request
- resp, err := client.Do(req)
- // Read response
- data, err := ioutil.ReadAll(resp.Body)
- // error handle
- if err != nil {
- fmt.Printf("error = %s \n", err);
- }
- // Print response
- fmt.Printf("Response = %s", string(data));
- }
Query MySql
Query MySql 前,要先安裝 MySql driver ,安裝指令如下:
go get github.com/go-sql-driver/mysql
Example
- import _ "github.com/go-sql-driver/mysql"
- import "database/sql"
- import "fmt"
- import "os"
- import "log"
- func main () {
- db, err := sql.Open("mysql", "user:password@/dbName?charset=utf8");
- if err != nil {
- fmt.Println("error = %s", err);
- os.Exit(1);
- }
- ret, err := db.Query("select * from Person");
- if err != nil {
- log.Fatal(err);
- }
- for ret.Next() {
- var id int
- var email string
- if err := ret.Scan(&id, &email); err != nil {
- log.Fatal(err);
- }
- fmt.Printf("id=%d email=%s\n",id, email);
- }
- }
import local package / library
如果我要寫一個稍大一點的功能,共有 A, B 兩個檔案,A 要去 include B ,golang 的檔案結構很像 Java , 當 B 是一個 library 的話,那麼我們一定要建一個資料夾 B ,並在程式中定義 "package B",範例如下。
example/B/B.go
- package B
- func Sum(a int, b int) (int) {
- return a + b
- }
example/A.go
- package main
- import "fmt"
- import "./B"
- func main() {
- ret := B.Sum(1, 2);
- fmt.Printf("sum = %d \n\n", ret);
- }
Big5 UTF8 編碼轉換
先用 go get 自動從 github 上安裝 iconv 。
go get github.com/qiniu/iconv
Example
- package main
- import "github.com/qiniu/iconv"
- import "fmt"
- func main() {
- cd, _ := iconv.Open("UTF-8", "Big5");
- c := cd.ConvString("\xa6\x72");
- fmt.Printf("content = %s", c);
相關網站
下面幾個網站,都可以用來查詢 golang 語法。
回應 (Leave a comment)