手机免费个人网站建站,汽车网站建设的目的,邵阳市 网站建设,翻硬币网站怎么做golang方法 go语言没有面向对象的特性#xff0c;也没有类对象的概念。但是#xff0c;可以使用结构体来模拟这些特性#xff0c;我们都知道面向对象里面有类方法等概念。我们也可以声明一些方法#xff0c;属于某个结构体go语言方法的语法 go中方法#xff0c;是一种特殊…golang方法 go语言没有面向对象的特性也没有类对象的概念。但是可以使用结构体来模拟这些特性我们都知道面向对象里面有类方法等概念。我们也可以声明一些方法属于某个结构体go语言方法的语法 go中方法是一种特殊的函数定义于struct之上(与struct关联、绑定)被称为struct的接受者(receiver)。通俗的讲方法就是有接收者的函数 语法格式如下
type mytype struct{}
func (recv mytype) method_name(para) return_type {}
func (recv *mytype) method_name(para) return_type {}mytype 是定义的结构体recv 接受该方法的结构体method_name 方法名称para 参数列表return_type 返回值类型
实例
package mainimport fmttype Person struct {name, email string
}func (recv Person) Eat() {fmt.Printf(recv.name: %v eat\n, recv.name)
}type Customer struct {name string
}func (recv Customer) login(name string, password string) bool {fmt.Printf(recv: %v\n, recv)if name recv.name password 123 {return true} else {return false}
}func main() {var p_person Person Person{name: tom,email: tomqq.com,}p_person.Eat()recv : Customer{name: haha}value : recv.login(haha, 123)fmt.Printf(value: %v\n, value)
}
go语言方法的注意事项
方法的receiver type 并非一定要是struct类型type定义的类型别名、slice、map、channel、func类型等都可以struct结合他的方法等价于面向对象中的类。只不过struct可以和他的方法分开写。并非一定要属于同一个文件但必须属于同一个包方法有两种接收类型(T Type)以及(T *Type)方法就是函数所以go中没有方法重载的说法也就是说同一个类型中的所有方法名称必须唯一。如果receiver是一个指针类型则会自动解除引用方法和type是分开的意味着实例的行为和数据存储是分开的但是他们通过receiver建立起关联关系