package mainimport ( "fmt" "math")type MovIE struct { name string rating float32}/* 创建方法: 创建方法 跟创建函数差不多,只是在func后面多了一个接受者,这个接受者可以被结构体引用,形成一种结构体的方法集 并且使任何关联到结构体的方法,都能使用他拥有的方法集中的方法,这样就能形成封装功能和创建库代码的有效方法 通过这种方法,我们可以理解成 一个类下面(golang中的结构体),所有方法(关联到这个结构体的所有方法) 接收者参数声明为指针引用 和 值引用的差别(就是在接受者中,是否用* 星号符): 如果需要修改原始结构体,就使用指针;如果需要 *** 作结构体,但不想修改原始结构体,就是用值 方法声明方式: type ... struct{} 接口:接口指定了一个方法集,这是实现模块化的强大方式。可以将接口视为方法集的蓝本,它描述了方法集中的所有方法,但没有实现他们。 接口多种方式的实现,就想多态。多态就是多种形式,它让接口能够有多种实现。 接口声明方式: type ... interface{} 函数和方法的不同: 方法多了一个指定接受者的参数,能够对数据类型调用方法,从而提高代码重用性和模块化程度 接口的实现尅包含接口中没有的方法,可以在接口的实现中添加额外的方法,但这仅适用于结构体,而不适用于接口。*/type Sphere struct { Radius float64}func (s *Sphere) jiOne() float64 { //圆的面积 return float64(4)*math.Pi + (s.Radius * s.Radius)}func (s *Sphere) jiTwo() float64 { //圆的体积 radiusCubed := s.Radius * s.Radius * s.Radius return (float64(4)/float64(3))*math.Pi + radiusCubed}//定义一个接口 :功能是PowerOn,接口描述了方法PowerOn的函数签名:不接受任何参数且返回一种错误类型type Robot interface { PowerOn() error}//接口的实现,接口也是一种类型,可作为参数传递给函数func (a *Sphere) PowerOn() error { if true { t := err return t }}func Boot(r Robot) error { return r.PowerOn()}func main() { s := Sphere{Radius: 5} fmt.Println(s.jiOne()) fmt.Println(s.jiTwo())}//这个叫方法申明func (m *MovIE) summary() string { //(m *MovIE) func后面多了一个参数---接受者,方法接受者是一种类型,这里指向结构体MovIE的指针 //summary 是方法名,参数以及放回类型 var a string = "abc" return a}func summary2(m *MovIE) string { //此处 函数summary2 和方法 summary 声明等价。 a := m.name return a}总结
以上是内存溢出为你收集整理的8.golang 创建方法和接口全部内容,希望文章能够帮你解决8.golang 创建方法和接口所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)