1.1概述
结构体是将零个或多个任意类型的变量,组合在一起的聚合数据类型,也可以看做是数据的集合。
1.2声明结构体
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| package main
import ( "fmt" )
type Person struct { Name string Age int }
func main() { var p1 Person p1.Name = "Tom" p1.Age = 30 fmt.Println("p1 =", p1)
var p2 = Person{Name:"Burke", Age:31} fmt.Println("p2 =", p2)
p3 := Person{Name:"Aaron", Age:32} fmt.Println("p2 =", p3) p4 := struct { Name string Age int } {Name:"匿名", Age:33} fmt.Println("p4 =", p4) }
|
运行结果:
1.3生成 JSON
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| package main
import ( "encoding/json" "fmt" )
type Result struct { Code int `json:"code"` Message string `json:"msg"` }
func main() { var res Result res.Code = 200 res.Message = "success"
jsons, errs := json.Marshal(res) if errs != nil { fmt.Println("json marshal error:", errs) } fmt.Println("json data :", string(jsons))
var res2 Result errs = json.Unmarshal(jsons, &res2) if errs != nil { fmt.Println("json unmarshal error:", errs) } fmt.Println("res2 :", res2) }
|
运行结果:
1.4改变数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| package main
import ( "encoding/json" "fmt" )
type Result struct { Code int `json:"code"` Message string `json:"msg"` }
func main() { var res Result res.Code = 200 res.Message = "success" toJson(&res) setData(&res) toJson(&res) }
func setData (res *Result) { res.Code = 500 res.Message = "fail" }
func toJson (res *Result) { jsons, errs := json.Marshal(res) if errs != nil { fmt.Println("json marshal error:", errs) } fmt.Println("json data :", string(jsons)) }
|
运行结果: