在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一 方法声明 在函数声明时,在其名字之前放上一个变量,即是一个方法。这个附加的参数会将该函数附加到这种类型上,即相当于为这种类型定义了一个独占的方法 func (i ST) add(q int) int {
return i.x + q } func add(i ST, q int) int { return i.x + q } func main() { st1 := ST{100} fmt.Println(st1.add(200)) 二 基于指针对象的方法 当这个接受者变量本身比较大时,我们就可以用其指针而不是对象来声明方法 func (i *ST) add2(q int) int {
return i.x + q } func main() { st1 := ST{100} fmt.Println(st1.add2(200)) //编译器会隐式地帮我们用&st去调用add2这个方法 三 嵌入结构体扩展类型 type ST struct { x int } type ST2 struct { ST //在类型中内嵌的匿名字段也可能是一个命名类型的指针,比如*ST,这种情况下字段和方法会被间接地引入到当前的类型中。添加这一层间接关系让我们可以共享通用的结构并动态地改变对象之间的关系
y int } func (i ST) add(q int) int { return i.x + q } func main() { st0 := ST2{ST{100}, 200}
fmt.Println(st0.add(100)) 内嵌字段会指导编译器去生成额外的包装方法来委托已经声明好的方法
|
请发表评论