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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
| type person struct {
age int
name string
}
func (p person) String_name() string{
return "the person name is " + p.name
}
func (p person) Int_age() int{
return p.age
}
func (p person) modify_value() {
p.name = "serrini"
}
func (p *person) modify_point() {
p.name = "serrini"
}
/*--------------struct-------------*/
//var p person
p := person{12, "jim"}
modify_struct_0(&p)
fmt.Println(p)
modify_struct_1(p)
fmt.Println(p)
fmt.Println(p.String_name())
fmt.Println(p.Int_age())
p.modify_value()
fmt.Println("值接收者,修改无效:", p.String_name())
p.modify_point()
fmt.Println("指针接收者,修改有效:", p.String_name())
func modify_struct_0(p *person) {
//通过传递结构体指针,可以修改age的值
p.age = p.age + 10
}
func modify_struct_1(p person) {
// 结构体传递的是其本身以及里面的值的拷贝,无法修改age的值
p.age = p.age + 10
}
/*--------------struct-------------*/
|