Go中的方法集
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go中的方法集相关的知识,希望对你有一定的参考价值。
类型*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)
}
以上是关于Go中的方法集的主要内容,如果未能解决你的问题,请参考以下文章
解决go: go.mod file not found in current directory or any parent directory; see ‘go help modules‘(代码片段
GO方法集问题cannot use xxxxx as xxxxx value in variable declaration
GO方法集问题cannot use xxxxx as xxxxx value in variable declaration
GO方法集问题cannot use xxxxx as xxxxx value in variable declaration
GO方法集问题cannot use xxxxx as xxxxx value in variable declaration