Go中的方法集

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

内容简介:类型*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)
}

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

查看所有标签

猜你喜欢:

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

expert one-on-one J2EE Development without EJB 中文版

expert one-on-one J2EE Development without EJB 中文版

[美] Rod Johnson、Juergen Hoeller / JavaEye / 电子工业出版社 / 2005-9 / 59.80元

乍一看这本书的名字,Expert one on one J2EE development without EJB并没有给人带来太冲击。毕竟关于J2EE的书太多了,而without EJB看上去有点象是故意挑衅EJB的感觉。一本J2EE的书怎么可能会给人带来信念或思维的冲击呢?但是它做到了,它不仅使自己变成了不朽的经典,也使Rod Johnson成为了我最近一年的新偶像。           ......一起来看看 《expert one-on-one J2EE Development without EJB 中文版》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

MD5 加密
MD5 加密

MD5 加密工具