package main
import "fmt"
type Person struct {
name string //名字
sex byte //性別, 字符類型
age int //年齡
}
//修改成員變量的值
//接收者爲普通變量,非指針,值語義,一份拷貝
func (p Person) SetInfoValue(n string, s byte, a int) {
p.name = n
p.sex = s
p.age = a
fmt.Println("p = ", p)
fmt.Printf("SetInfoValue &p = %p\n", &p)
}
//接收者爲指針變量,引用傳遞
func (p *Person) SetInfoPointer(n string, s byte, a int) {
p.name = n
p.sex = s
p.age = a
fmt.Printf("SetInfoPointer p = %p\n", p)
}
func main() {
s1 := Person{"go", 'm', 22}
fmt.Printf("&s1 = %p\n", &s1) //打印地址
//值語義
// s1.SetInfoValue("mike", 'm', 18)
// fmt.Println("s1 = ", s1) //打印內容
//引用語義
(&s1).SetInfoPointer("mike", 'm', 18)
fmt.Println("s1 = ", s1) //打印內容
}
#執行結果:
&s1 = 0xc00005a400
SetInfoPointer p = 0xc00005a400
s1 = {mike 109 18}