Struct
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-------------*/
输出:
/*--------------struct-------------*/
{22 jim}
{22 jim}
the person name is jim
22
值接收者,修改无效: the person name is jim
指针接收者,修改有效: the person name is serrini
/*--------------struct-------------*/