我在看到Go语言定义一个类,以及类的方法是如下方式定义的:
a.go文件:
package main
import "fmt"
// 类外函数
func outsideFunction() {
fmt.Println("This is outside function.")
}
type MyStruct struct{}
// 类内方法(接收者为结构体)
func (m MyStruct) classMethod() {
fmt.Println("This is class method.")
}
func main() {
outsideFunction()
myObj := MyStruct{}
myObj.classMethod()
}
1、请问这个是否是一个约定俗成的定义Go类的方式?(定义方法在定义类(struct)之后)
2、如果我在另外一个文件b.go里面引入MyStruct,并且再在b.go里面添加方法classMethod2
:
// 类内方法(接收者为结构体)
func (m MyStruct) classMethod2() {
fmt.Println("This is class method2.")
}
是否可以呢?
这是常见方式。结构体可以被视为类的模拟,而方法则是与结构体关联的函数。通常情况下会先定义结构体,然后再定义与之相关联的方法:
可以。
Go
允许在同一包中的不同文件中为结构体添加多个方法。这样做,classMethod2
方法将与MyStruct
结构体关联。可以在其他地方使用: