go实现类操作

举报
仙士可 发表于 2023/06/26 17:07:30 2023/06/26
【摘要】 众所周知,go是没有类这个概念的,但是有函数方法这个概念,可以通过函数方法,指定方法为某个结构体专用,例如:user.gopackage mainimport "errors"type user struct { userId int userName string password string}func (receiver user) GetName() string { ...

众所周知,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函数,会在引入文件后自动执行,而不是根据实例化结构体执行的:

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。