go Struct 结构体
结构体是将零个或多个任意类型的变量,组合在一起的聚合数据类型,也可以看做是数据的集合。
声明结构体
 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
  | 
//demo_11.go
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)
}
  | 
 
生成 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
  | 
//demo_12.go
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
 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
  | 
//demo_13.go
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))
}
  |