Golang QuickStart
来自Jack's Lab
(版本间的差异)
(→Resource) |
(→JSON) |
||
| (未显示1个用户的4个中间版本) | |||
| 第20行: | 第20行: | ||
* https://golang.org | * https://golang.org | ||
* http://www.eclipse.org/paho/clients/golang/ | * http://www.eclipse.org/paho/clients/golang/ | ||
| + | |||
| + | <br><br> | ||
| + | |||
| + | == Hello == | ||
| + | |||
| + | <source lang=bash> | ||
| + | comcat@jackslab:/work/go$ cat hello.go | ||
| + | package main | ||
| + | |||
| + | import "fmt" | ||
| + | |||
| + | func main() { | ||
| + | fmt.Println("Hello, World!") | ||
| + | } | ||
| + | |||
| + | comcat@jackslab:/work/go$ go run hello.go | ||
| + | Hello, World! | ||
| + | comcat@jackslab:/work/go$ | ||
| + | comcat@jackslab:/work/go$ go build hello.go | ||
| + | comcat@jackslab:/work/go$ ./hello | ||
| + | Hello, World! | ||
| + | </source> | ||
<br><br> | <br><br> | ||
| 第40行: | 第62行: | ||
== Data Structures == | == Data Structures == | ||
| + | |||
| + | === JSON === | ||
| + | |||
| + | <source lang=bash> | ||
| + | comcat@jackslab:/work/go$ cat post.go | ||
| + | package main | ||
| + | |||
| + | import ( | ||
| + | "fmt" | ||
| + | "strings" | ||
| + | "net/http" | ||
| + | "encoding/json" | ||
| + | ) | ||
| + | |||
| + | var url string = "http://api.noduino.org/user/token" | ||
| + | |||
| + | type Body struct { | ||
| + | UID string `json:"user_id"` | ||
| + | } | ||
| + | |||
| + | var body = Body { | ||
| + | UID: "YOUR_WECHAT_OPENID", | ||
| + | } | ||
| + | |||
| + | func main() { | ||
| + | |||
| + | data, err := json.Marshal(body) | ||
| + | |||
| + | if err == nil { | ||
| + | resp, err := http.Post(url, "application/json", strings.NewReader(string(data))) | ||
| + | if err != nil { | ||
| + | fmt.Println(err) | ||
| + | } | ||
| + | |||
| + | dec := json.NewDecoder(resp.Body) | ||
| + | var v map[string]interface{} | ||
| + | if err := dec.Decode(&v); err != nil { | ||
| + | fmt.Printf("error: %v\n", err) | ||
| + | } else { | ||
| + | fmt.Println(v["user_token"]) | ||
| + | } | ||
| + | |||
| + | resp.Body.Close() | ||
| + | } | ||
| + | } | ||
| + | comcat@jackslab:/work/go$ go run post.go | ||
| + | 203c57f69b22c0e9fe2a685e4819c231 | ||
| + | </source> | ||
<br><br> | <br><br> | ||
2017年6月9日 (五) 09:23的最后版本
目录 |
[编辑] 1 Prepare
Install the Go lang:
$ sudo apt-get install golang-go
Install a library:
$ sudo apt-get install golang-eclipse-paho-dev $ export GOPATH=/usr/share/gocode
Refer to:
[编辑] 2 Hello
comcat@jackslab:/work/go$ cat hello.go
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
comcat@jackslab:/work/go$ go run hello.go
Hello, World!
comcat@jackslab:/work/go$
comcat@jackslab:/work/go$ go build hello.go
comcat@jackslab:/work/go$ ./hello
Hello, World!
[编辑] 3 Basics
[编辑] 4 Operators
[编辑] 5 Control Flow
[编辑] 6 Functions
[编辑] 7 Data Structures
[编辑] 7.1 JSON
comcat@jackslab:/work/go$ cat post.go
package main
import (
"fmt"
"strings"
"net/http"
"encoding/json"
)
var url string = "http://api.noduino.org/user/token"
type Body struct {
UID string `json:"user_id"`
}
var body = Body {
UID: "YOUR_WECHAT_OPENID",
}
func main() {
data, err := json.Marshal(body)
if err == nil {
resp, err := http.Post(url, "application/json", strings.NewReader(string(data)))
if err != nil {
fmt.Println(err)
}
dec := json.NewDecoder(resp.Body)
var v map[string]interface{}
if err := dec.Decode(&v); err != nil {
fmt.Printf("error: %v\n", err)
} else {
fmt.Println(v["user_token"])
}
resp.Body.Close()
}
}
comcat@jackslab:/work/go$ go run post.go
203c57f69b22c0e9fe2a685e4819c231
[编辑] 8 Exceptions
[编辑] 9 Modules
[编辑] 10 Resource