go-struct

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
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-------------*/

输出:

1
2
3
4
5
6
7
8
/*--------------struct-------------*/
{22 jim}
{22 jim}
the person name is jim
22
值接收者修改无效 the person name is jim
指针接收者修改有效 the person name is serrini
/*--------------struct-------------*/
使用 Hugo 构建
主题 StackJimmy 设计