众所周知,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函数,会在引入文件后自动执行,而不是根据实例化结构体执行的:
本文为仙士可原创文章,转载无需和我联系,但请注明来自仙士可博客www.php20.cn