众所周知,go是没有类这个概念的,但是有函数方法这个概念,可以通过函数方法,指定方法为某个结构体专用,例如:
user.go
package main import "errors" type user struct { userId int userName string password string } func (receiver user) GetName() string { return receiver.userName } func (receiver *user) UpdateName(name string)(string,error) { //更新用户名称 receiver.userName = name if false { return "", errors.New("更新失败") } return receiver.userName,nil }
main.go:
package main import "fmt" func main() { userInfo :=user{1,"仙士可","123456"} userInfo.UpdateName("仙士可1号") fmt.Println(userInfo.userName) }
即可实现类方法操作
但是需要注意:
在UpdateName方法中,接收者需要定义为值引用,定义为指针才可以更改结构体的变量数据:
同时,在文件里面的init函数,会在引入文件后自动执行,而不是根据实例化结构体执行的: