8.golang 创建方法和接口

8.golang 创建方法和接口,第1张

概述package mainimport ( "fmt" "math")type Movie struct { Name string Rating float32}/* 创建方法: 创建方法 跟创建函数差不多,只是在func后面多了一个接受者,这个接受者可以被结构体引用,形成一种结构体的方法集 并且使任何关联到结构体的方法,都能使用他拥有的方法集中的方法,这样就能形成封装
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 创建方法和接口所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1264810.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存