Go语言的方法值和方法表达式-创新互联
// code_20_struct_method_expression project main.go
package main
import (
"fmt"
)
//方法表达式:也即“方法对象赋值给变量”
//两种使用方式:
//1)隐式调用, struct实例获取方法对象---->方法值
//2)显示调用, struct类型获取方法对象, 须要传递struct实例对象作为参数。---->方法表达式
type Person struct {
name string
sex byte
age int
}
func (p *Person) PrintInfoPointer() {
fmt.Printf("%p, %v\n", p, p)
}
func (p Person) PrintInfoValue() {
fmt.Printf("%p, %v\n", &p, p)
}
func main() {
//直接调用
p := Person{"ck_god", 'm', 18}
p.PrintInfoPointer()
fmt.Println("---------------\n")
//方法表达式
pFunc1 := (*Person).PrintInfoPointer
pFunc1(&p)
pFunc2 := Person.PrintInfoValue
pFunc2(p)
fmt.Println("---------------\n")
//方法值
pFunc3 := p.PrintInfoPointer
pFunc3()
pFunc4 := p.PrintInfoValue
pFunc4()
fmt.Println("---------------\n")
//备注:pFunc2和pFunc4的内存地址是不一样的;pFunc1和pFunc3的内存地址是一致的
}
结果如下:
创新互联建站网站建设提供从项目策划、软件开发,软件安全维护、网站优化(SEO)、网站分析、效果评估等整套的建站服务,主营业务为成都网站设计、做网站,app软件开发以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。创新互联建站深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!0xc000050400, &{ck_god 109 18}
---------------
0xc000050400, &{ck_god 109 18}
0xc000050480, {ck_god 109 18}
---------------
0xc000050400, &{ck_god 109 18}
0xc0000504e0, {ck_god 109 18}
---------------
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
网页名称:Go语言的方法值和方法表达式-创新互联
文章地址:http://myzitong.com/article/dpsigo.html