<代码>//main.go code_017_struct_method_usage项目
主要包
导入(
“fmt”
)
敏int类型
func(敏)添加(b敏敏){
返回一个+ b
}
函数添加(a、b敏敏){
返回一个+ b
}
人型结构{
名称字符串
性字节
年龄int
}
func (p人)PrintInfo () {
fmt.Println (p.name p.a ge)
}
func (p *人)SetInfoPointer () {
(* p) . name=" god_girl "
p。性别=1
p。年龄=22
}
func (p人)SetInfoValue () {
p.name=" god_like "
p。性别=1
p。年龄=23
}
函数main () {/*
带有接收者的函数,我们称之为方法(方法)。本质上,一个方法则是一个和特殊类型关联的函数。
func(接收机ReceiverType) funcName(参数){结果}
1)参数接收机可任意命名。如方法中未曾使用,可省略参数名。
?参数接收器类型可以是T或* T·基类型T不能是接口或指针。
?不支持重载方法,也就是说,不能定义名字相同但是不同参数的方法。
2)在去语言中,可以给任意自定义类型(包括内置类型,但不包括指针类型)添加相应的方法。
*///1)基本使用
var敏=1
var b敏=1
fmt.Println (“a.Add (b)=", a.Add (b))
fmt.Println(“添加(a, b)=?添加(a, b))//2)结构体作为接收者
p:=人{“ck_god”, 0, 18}
p.PrintInfo ()//3)结构体的值语义和引用语义
p1:=人{“wanglaoji”, 0, 27}
fmt。Println(“函数调用前=",p1)
(和p1) .SetInfoPointer ()
fmt。Println(“函数调用后=",p1)
fmt.Println (“==========================")
p2:=人{“ck_god”, 0, 18}
fmt。Println(“函数调用前=",p2)
p2.SetInfoValue ()
fmt。Println(“函数调用后=",p2)//函数调用后={迈克109 18岁}
}
代码> >之前