当前位置: 首页 > news >正文

萍乡做网站的公司有哪些排名优化公司电话

萍乡做网站的公司有哪些,排名优化公司电话,做养生网站怎么样,做网站建设怎么介绍自己go语言并没有面向对象的相关概念,go语言提到的接口和java、c等语言提到的接口不同,它不会显示的说明实现了接口,没有继承、子类、implements关键词。go语言通过隐性的方式实现了接口功能,相对比较灵活。 interface是go语言的一大…

go语言并没有面向对象的相关概念,go语言提到的接口和java、c++等语言提到的接口不同,它不会显示的说明实现了接口,没有继承、子类、implements关键词。go语言通过隐性的方式实现了接口功能,相对比较灵活。

interface是go语言的一大特性,主要有以下几个特点:

  • interface 是方法或行为声明的集合
  • interface接口方式实现比较隐性,任何类型的对象实现interface所包含的全部方法,则表明该类型实现了该接口。
  • interface还可以作为一中通用的类型,其他类型变量可以给interface声明的变量赋值。
  • interface 可以作为一种数据类型,实现了该接口的任何对象都可以给对应的接口类型变量赋值。

下面是一些代码示例

接口实现

package mainimport "fmt"type Animal interface {GetAge() int32GetType() string
}type Dog struct {Age  int32Type string
}func (a *Dog) GetAge() int32 {return a.Age
}
func (a *Dog) GetType() string {return a.Type
}func main() {animal := &Dog{Age: 20, Type: "DOG"}fmt.Printf("%s max age is: %d", animal.GetType(), animal.GetAge())}

interface作为通用类型

package mainimport ("fmt""reflect"
)type User struct {Id     intName   stringAmount float64
}func main() {var i interface{}i = "string"fmt.Println(i)i = 1fmt.Println(i)i = User{Id: 2}//i.(User).Id = 15  //运行此处会报错,在函数中修改interface表示的结构体的成员变量的值,编译时遇到这个编译错误,cannot assign to i.(User).Idfmt.Println(i.(User).Id)}

注意:

不可用i:=interface{} 这种形式,因为不能确定i的具体类型,会报type interface {} is not an expression 错误。

interface接口查询

接口查询,在一个接口变量中,查询所赋值的对象有没有实现其他接口所有的方法的过程,就是查询接口。即接口A实现了接口B中所有的方法,那么通过查询赋值A可以转化为B。

代码示例

package mainimport "fmt"type Animal interface {GetAge() int32GetType() string
}
type AnimalB interface {GetAge() int32
}type Dog struct {Age  int32Type string
}func (a *Dog) GetAge() int32 {return a.Age
}
func (a *Dog) GetType() string {return a.Type
}func main() {var animal Animal = &Dog{Age: 20, Type: "DOG"}fmt.Printf("%s max age is: %d", animal.GetType(), animal.GetAge())var animalb AnimalB = &Dog{Age: 20, Type: "DOG"}fmt.Printf("max age is: %d", animalb.GetAge())//这里实现了animalb 转化Animal接口val, ok := animalb.(Animal)if !ok {fmt.Println("ok")} else {fmt.Printf("%s max age is: %d", val.GetType(), val.GetAge())}
}

接口转化很简单

val, ok := animalb.(Animal)

注意,animalb 只有AnimalB所包含的方法GetAge()。

如果接口A的方法列表是接口B的方法列表的子集,那么接口B可以赋值给接口A,反之则不行。

接口类型查询

只能对interface{}类型的变量使用类型查询

示例

package mainimport "fmt"type Animal interface {GetAge() int32GetType() string
}
type AnimalB interface {GetAge() int32
}type Dog struct {Age  int32Type string
}func (a *Dog) GetAge() int32 {return a.Age
}
func (a *Dog) GetType() string {return a.Type
}func main() {var i interface{}//i = "ok"//方法一val, ok := i.(Animal)if !ok {fmt.Println("no")} else {fmt.Println(val.GetAge())}// 方法二switch val := i.(type) {case string:fmt.Println(val)case int:fmt.Println(val)default:fmt.Println(val)}// 方法三 通过反射typename := reflect.TypeOf(i)fmt.Println(typename)
}

interface默认nil所以查出是nil,如果给i赋值一个字符型值(去掉i = "ok"前面的注释),则返回

no
ok
string

http://www.mmbaike.com/news/76563.html

相关文章:

  • 临漳网站建站百度账号怎么注销
  • wordpress如何设置分类目录seo优化工具有哪些
  • 用python做的电商网站手机优化专家下载
  • 做刷网站怎么赚钱新品上市怎么做宣传推广
  • 做 性爱 图片网站百度联系方式人工客服
  • 中国建设银行官方网站诚聘英才厦门百度整站优化服务
  • 网站建设 鄂icp备免费推广平台
  • 徐州城乡建设网站农产品网络营销方案
  • 上什么网站做会计教育福州seo结算
  • 不会编程做网站seo在线论坛
  • html网站要怎么做医院网络销售要做什么
  • 做的网站域名劫持上海排名seo公司
  • 网站建设10个基本步骤人民网疫情最新消息
  • wordpress百万数据库seo网站优化工具
  • 手机微信可以做网站吗网站快速排名推荐
  • 济南网站制作平台上海专业优化排名工具
  • 网站怎么做关键词搜索排面沧州网站seo
  • 电商网站 知名案例外国网站开放的浏览器
  • 粤icp备网站建设 中企动力广州最新国际新闻
  • 网上开店平台有哪些seo的基本步骤包括哪些
  • 如何添加网站后台百度知道合伙人答题兼职
  • 网站制作南宁媒体公关是做什么的
  • 高端网站制作网站设计全自动推广软件
  • 网站开发加设计要多少钱网站服务器查询
  • 网站logo怎么设置seo网站分析报告
  • b2c是什么seo自学教程
  • 可以做哪些网站有哪些内容吗网站搜索关键词优化
  • 沈阳正规制作网站公司吗在线外链发布工具
  • 电子商务网站建设设计站长之家权重
  • 机械做网站好处百度推广关键词多少合适