golang中值类型方法集合和指针类型方法有什么区别?
golang中值类型方法集合和指针类型方法有什么区别?
- 什么是值类型方法集合?
- 什么是指针类型方法集合?
- 接受方法类型既有值类型又有指针类型,有什么区别?
什么是值类型方法集合?
先看一段代码:
type people struct {
Name string
Age int
}
func (p people) SetName(name string) {
p.Name = name
}
func (p people) SetAge(age int) {
p.Age = age
}
SetName 和 SetAge 两个方法的接受类型(方法名左边括号中变量的类型都是people)都是值类型(people类型非指针类型),那么我们就说SetName和SetAge这两个方法都是值类型方法集合。
什么是指针类型方法集合?
还是先看一段代码:
type people struct {
Name string
Age int
}
func (p *people) SetName(name string) {
p.Name = name
}
func (p *people) SetAge(age int) {
p.Age = age
}
SetName 和 SetAge 两个方法的接受类型(方法名左边括号中变量的类型都是*people)都是指针类型(*people类型引用类型),那么我们就说SetName和SetAge这两个方法都是指针类型方法集合。
接受方法类型既有值类型又有指针类型,有什么区别?
比如这样的:(代码1)
type people struct {
Name string
Age int
}
func (p *people) SetName(name string) {
p.Name = name
}
func (p people) SetAge(age int) {
p.Age = age
}
先说答案:值类型方法集合为 SetAge;指针方法集合为:SetName,SetAge。
相信你已经有答案了,指针类型方法集合包括值类型方法集合同时加上接收类型为引用类型的方法。用数学上集合来表示范围就是:值类型方法集合是指针类型方法集合的真子集。qianr
还没有评论,来说两句吧...