struct的方法,有两种写法,一种是指针,一种是变量
func (self *ST) f(){}
func (self ST) f(){}
有什么区别?
package main
import (
"fmt"
)
type MyStruct struct{
Name string
Age int
}
func (self *MyStruct) SayName(){
fmt.Println(self.Name)
}
func (self MyStruct) SayAge(){
fmt.Println(self.Age)
}
func (self *MyStruct) SetName(name string){
self.Name = name
}
func (self MyStruct) SetAge(age int){
self.Age = age
}
func main() {
myStruct := &MyStruct{}
myStruct.SayName()
myStruct.SayAge()
myStruct.SetName("qii")
myStruct.SetAge(23)
fmt.Printf("%+v",myStruct)
}
对于SayName和SayAge来说,没有区别,声明方式也不造成影响
myStruct := MyStruct{"qii",23}
myStruct := &MyStruct{"qii",23}
但是对于SetName和SetAge来说,SetName能够改变,而SetAge却不起作用,声明方式也不造成影响。
{Name:qii Age:0}
区别在于,引用能够改变结构字段的值。
有疑问加站长微信联系(非本文作者)