Go中的方法

基本介绍
golang中的方法是作用在指定的数据类型上的(和数据类型绑定的),因此自定义类型都可以用方法,而不仅仅是struct。
方法的声明和调用

type A struct{
Num int
}
func(a A) test(){
fmt.Println(a.Num)
}
  1. func(a A) test(){}表示A结构体有一个方法,方法名字为test
  2. (a A)体现test方法和A类型绑定的。
type Person struct {
Name int
}
//Test方法是结构体Person的方法
func (p Person) Test() {
fmt.Println("test()", p.Name)
}
func main() {
//定义一个person实例
var p model.Person
p.Test() //test() 0
}
  1. Test方式和Person类型绑定。
  2. Test方法只能通过Person类型的变量来调用,而不能直接调用,也不能使用其他类型变量来调用。
  3. func(p Person)Test(){}中的p表示哪个Person变量调用,这个p就是一个副本,这个和函数的传参非常相似。
  4. p这个相当于一个变量名,可以随意修改。

方法的调用和传参机制的原理:
方法的调用和传参机制和函数基本一样,不一样的地方是方法调用时,会将调用方法的变量,当做实参也传递给方法。
举例:

  1. 在通过一个变量去调用方法时,其调用机制和函数一样。
  2. 不一样的地方是变量调用方法时,改变量本身也会作为一个参数传递到方法中(如果变量是值类型则进行值拷贝,如果是引用类型,则进行地址拷贝)。

方法的声明:

func(recevier Type) methodName(参数列表) (返回值列表){
方法体
return 返回值
}
  1. 参数列表:表示方法输入。
  2. recevier Type:表示这个方法和type这个类型进行绑定,或者说该方法作用于type类型。
  3. recevier Type:type可以是结构体,也可以是其他自定义类型。
  4. recevier: 就是type类型的一个变量。
  5. 返回值列表: 表示返回的值,可以是多个。
  6. 方法主题:表示为了实现某一功能代码块。
  7. return语句不是必须的。

方法的注意事项和细节:

  1. 结构体类型是值类型,在方法调用中,遵守值类型的传递机制,值值拷贝传递方法。
  2. 如果希望方法中修改结构体变量的值,可以通过结构体指针的方式来处理。
  3. golang中的方法作用在指定的数据类型上,因此自定义类型都可以有方法。而不仅仅是struct,比如自定义后的int,float32等都可以用方法。
  4. 方法的访问范围控制和函数一样,方法首字母小写,只能在本包访问,方法首字母大写,可以在本包和其他包访问。
  5. 如果一个类型实现了String()这个方法,那么fmt.Println默认会调用这个变量的String()进行输出。
posted @   程序马2023  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示