Go中的方法集

栏目: Go · 发布时间: 7年前

内容简介:类型*T方法集类型T的方法集

类型*T方法集

// code_018_struct_method_set project main.go
package main

import (
    "fmt"
)

//类型*T方法集
type Person struct {
    name string
    sex  byte
    age  int
}

//指针作为接收者,引用语义
func (p *Person) SetInfoPointer() {
    (*p).name = "yoyo"
    p.sex = 'f'
    p.age = 22
}

//值作为接收者,值语义
func (p Person) SetInfoValue() {
    p.name = "xxx"
    p.sex = 'm'
    p.age = 33
}

func main() {
    //p 为指针类型
    var p *Person = &Person{"mike", 'm', 18}
    p.SetInfoPointer() //func (p) SetInfoPointer()
    fmt.Println(p)

    p.SetInfoValue() //func (*p) SetInfoValue()
    fmt.Println(p)
    (*p).SetInfoValue() //func (*p) SetInfoValue()
    fmt.Println(p)
}

类型T的方法集

// code_018_struct_method_set2 project main.go
package main

import (
    "fmt"
)

//类型T方法集
type Person struct {
    name string
    sex  byte
    age  int
}

func (p *Person) SetInfoPointer() {
    (*p).name = "yoyo"
    p.sex = 'f'
    p.age = 22
}

func (p Person) SetInfoValue() {
    p.name = "xxx"
    p.sex = 'm'
    p.age = 33
}

func main() {
    //p为普通类型
    var p Person = Person{"ck_go", 'm', 18}
    (&p).SetInfoPointer()
    p.SetInfoPointer()

    p.SetInfoValue()
    (&p).SetInfoValue()
    fmt.Println(p)
}

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

创新者的窘境

创新者的窘境

克莱顿•克里斯坦森( Clayton M. Christensen ) / 胡建桥 / 中信出版社 / 2010-6 / 38.00元

管理类经典图书 o 被《福布斯》评为20世纪最具影响的20本商业图书之一 o “全球商业书籍奖”获奖图书 “颠覆大师”克莱顿•克里斯坦森经典力作。 《金融时报》/布兹•亚兰及汉密顿全球商务书刊颁发“1997年最佳商务书”奖 “1997年最佳商务‘实用’书”奖 一本书, 让志在必得者战战兢兢, 让犹豫不前者胸有成竹, 掀起激荡决策者的脑力风暴, ......一起来看看 《创新者的窘境》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具