概述
结构体是将零个或多个任意类型的变量,组合在一起的聚合数据类型,也可以看做是数据的集合。
声明结构体
查看代码
go
package main
import "fmt"
func main() {
struct_1()
}
type Person struct {
name string
age int
}
func struct_1() {
var p1 Person
p1.name = "ng"
p1.age = 25
fmt.Println(p1, p1.name)
p2 := Person{"ky", 23}
fmt.Println(p2)
p3 := Person{name: "kiku", age: 26}
fmt.Println(p3)
// 匿名结构体
p4 := struct {
week int
day int
}{1, 3}
fmt.Println(p4)
}
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
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
运行结果:
生成 JSON
查看代码
go
type Result struct {
StatusCode int `json:"statusCode"`
Message string `json: "message"`
}
func struct_2() {
var res1 Result
res1.StatusCode = 200
res1.Message = "success"
//序列化
var jsons, errs = json.Marshal(res1)
// fmt.Println(jsons, errs)
if errs != nil {
fmt.Println("errors: ", errs)
}
fmt.Println(string(jsons))
fmt.Println("--------反序列化")
//反序列化
var res2 Result
errs = json.Unmarshal(jsons, &res2)
// fmt.Println(jsons, errs)
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
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
运行结果:
改变数据
查看代码
go
func struct_3() {
var res1 Result
res1.StatusCode = 200
res1.Message = "success"
print(&res1)
set(&res1)
print(&res1)
}
func set(res *Result) {
res.StatusCode = 500
res.Message = "error message!"
}
func print(res *Result) {
jsons, errs := json.Marshal(res)
if errs != nil {
fmt.Println("json unmarshal error:", errs)
}
fmt.Println("output :", string(jsons))
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
运行结果: