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

婚纱照网站模板wordpress 更新超时

婚纱照网站模板,wordpress 更新超时,嘉定区 网站建设,三亚网站开发哪家好GO系列 1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 6、GO学习之 通道(Channel) 7、GO学习之 多线程(goroutine) 8、GO学习之 函数(Function) 9、GO学习之 接口(Interface) 文章目录 GO系列前言一、什么是…GO系列 1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 6、GO学习之 通道(Channel) 7、GO学习之 多线程(goroutine) 8、GO学习之 函数(Function) 9、GO学习之 接口(Interface) 文章目录 GO系列前言一、什么是接口interface二、如何定义接口三、如何实现接口3.1 多个类型实现同一接口3.2 一个类型实现多个接口3.3 接口嵌套3.4 空接口 四、接口与类型断言五、接口运用六、总结 前言 按照公司目前的任务go 学习是必经之路了虽然行业卷不过技多不压身依旧努力 在JAVA中我们可以使用interface来定义一个接口抽离出来公共的字段和方法再有不同的class来实现这些接口和接口中方法来实现代码的解耦和灵魂主要依据的就是JAVA的多态性比如说在 Spring框架中有 EventListener 接口然后实现了此接口的有好多classContextRefreshListener、RestartListener…每个实现类都有个子不同的功能。 那在 Go 语言中也有 interface我们可以通过 interface来定义一种对象的行为规范也就是定义了一组行为不需要关注这些规范如何实现我们可以通过接口将代码解耦使得不同模块之间依赖减少提高代码可维护性。 一、什么是接口interface interface 是一种类型描述了对象的行为但是不关心实现interface 只定义了方法没有实现有其他类型实现是一组方法的集合接口提供了一种约定告诉其他类型实现这些方法即可满足接口的要求不像其他语言中的接一样需要显式地声明实现了哪些接口Go 语言中的实现是隐式的只要一个类型实现了接口中定义的所有方法就视为该类型实现了接口 二、如何定义接口 接口的定义语法type {interfaceName} interface { MethodName(paramName paramType) returnType },比如type Runner interface{ run(name string) string }接口中的方法只有方法名、参数列表和返回值类型没有方法体接口中方法的参数和返回值可以是任何类型包括 interface 类型强调interface 是一种类型接口中方法可以有多个返回值比如type Shape interface {Area() (float64, error)}接口定义中方法名称和参数列表组成了接口的签名 三、如何实现接口 如果一个类型实现了接口中定义的所有方法就视为该类型实现了接口如果一个类型实现了某个接口那么可以将该类型的实现赋值给接口类型变量一个类可以实现多个接口 3.1 多个类型实现同一接口 此例子中定义了一个 Shape 的接口这个接口提供了 Area 方法用来求图形的面积分别定义矩形Rectangle和 圆形Circle两个结构体并且实现了 Shape 中的 Area 方法初始化矩形和圆形并且调用 Area 方法求出面积。 package mainimport fmt// 定义一个图形接口方法是求图形的面积 type Shape interface {Area() float64 }// 定义一个矩形 type Rectangle struct {Width float64Height float64 }// 矩形实现了 Shape 接口中求面积的 Area 方法 func (r Rectangle) Area() float64 {return r.Width * r.Height }// 定义一个圆形 type Circle struct {Radius float64 }// 圆形实现了 Shape 接口中求面积的 Area 方法 func (c Circle) Area() float64 {return 3.14 * c.Radius * c.Radius }func main() {// 定义一个接口类型变量var shape Shape// 创建一个矩形并赋值给接口 shapeshape Rectangle{Width: 5, Height: 10}fmt.Printf(矩形的面积是%v\n, shape.Area())// 创建一个圆形并赋值给接口 shapeshape Circle{Radius: 3}fmt.Printf(圆形的面积是%v\n, shape.Area()) } 运行结果 PS D:\workspaceGo\src\interface go run .\interfaceTest.go 矩形的面积是50 圆形的面积是28.2599999999999983.2 一个类型实现多个接口 此例子中定义了两个接口分别是 ShapeArea求面积 和 ShapeRound求周长 两个接口实例化了 Sequre 类型并且赋值给两个接口调用各自接口方法 package mainimport fmt// 定义一个图形接口方法是求图形的面积 type ShapeArea interface {Area() float64 }// 定一个图形接口方法是求图形周长 type ShageRound interface {Round() float64 }// 定义一个正方形 type Sequre struct {Side float64 }// 正方形实现了 ShapeArea 接口中求面积的 Area 方法 func (s Sequre) Area() float64 {return s.Side * s.Side }// 正方形实现了 ShapeRound 接口中周长 Round 的方法 func (s Sequre) Round() float64 {return 4 * s.Side }func main() {// 定义接口var spaceArea ShapeAreavar spaceRound ShageRound// 实例化 Sequre 结构体s : Sequre{Side: 9}// 赋值给接口 spaceArea 以求面积spaceArea sfmt.Printf(正方形的面积是%v\n, spaceArea.Area())// 赋值给接口 spaceRound 以求周长spaceRound sfmt.Printf(正方形的周长是%v\n, spaceRound.Round()) } 运行结果 PS D:\workspaceGo\src\interface go run .\interfaceTest2.go 正方形的面积是81 正方形的周长是363.3 接口嵌套 此示例中定义了两个接口 Sayer 和 Mover 为了方便其他类型是又定义了一个接口 Animal 嵌套了 Sayer 和 Mover 两个接口基于两个接口的规则一自身然后定义了 Cat 结构体类型实例化之后赋值给了 Animal 变量 ‘yuanbao’元宝是之前养过的一只很有灵性的黑白猫元宝就可以叫还可以上蹿下跳了。 package mainimport fmt// 定义接口 表示可以说话 type Sayer interface {say() }// 定义接口表示可以移动 type Mover interface {move() }// 接口嵌套 type Animal interface {SayerMover }// 定义结构体类型 猫咪 type Cat struct {Name string }// 定义猫咪叫的方法 func (c Cat) say() {fmt.Printf(喵咪 %v 在叫喵喵喵\n, c.Name) }// 定义猫咪动的方法 func (c Cat) move() {fmt.Printf(猫咪 %v 在上蹿下跳\n, c.Name) }func main() {var yuanbao Animalyuanbao Cat{Name: 元宝}yuanbao.say()yuanbao.move() } 运行结果 PS D:\workspaceGo\src\interface go run .\interfaceNested.go 喵咪 元宝 在叫喵喵喵 猫咪 元宝 在上蹿下跳3.4 空接口 此示例中定义了一个空接口既然接口是一种类型不关心实现那我们可以借助空接口来实现接受任何类型参数类似于JAVA中的 Object 超类可以接受任何参数可以作为函数的参数也可以放在 map 中以便此 map 存放任何类型的值。 package mainimport fmt// 定义一个空接口 type Object interface{}// 定义一个函数接受任何类型参数 func show(o interface{}) {fmt.Printf(type: %T, value: %v\n, o, o) }func main() {show(100)show(phan日复一日刻苦学习成就大业)// 定义一个 Map, key为字符串值为任何类型var myInfo make(map[string]interface{})myInfo[name] phenmyInfo[age] 25myInfo[hobby] 运动看书数钱myInfo[rich] falsefmt.Printf(phen的个人信息%v\n, myInfo) }运行结果 PS D:\workspaceGo\src\interface go run .\interfaceEmpty.go type: int, value: 100 type: string, value: phan日复一日刻苦学习成就大业 phen的个人信息map[age:25 hobby:运动看书数钱 name:phen rich:false]四、接口与类型断言 类型断言是将接口类型转换为其他类型的操作类型断言有两种方式1、value, ok : x.(T)2、value : x.(T)类型断言可以判断接口类型是否实现了某个接口类型断言可以判断接口类型是否是某个具体类型 package mainimport fmt// 定义一个图形接口方法是求图形的面积 type Shape interface {Area() float64 }// 定义一个矩形 type Rectangle struct {Width float64Height float64 }// 矩形实现了 Shape 接口中求面积的 Area 方法 func (r Rectangle) Area() float64 {return r.Width * r.Height }func main() {// 定义一个接口类型变量var shape Shape// 接口断言,如果 ok true, 则 rect 的类型为 Rectangleif rect, ok : shape.(Rectangle); ok {fmt.Printf(矩形的面积为 %v\n, rect.Area())} else {fmt.Println(接口 shape 不包含 Rectangle 的值)}// 创建一个矩形并赋值给接口 shapeshape Rectangle{Width: 5, Height: 10}// 接口断言,如果 ok2 true, 则 r 的类型为 Rectangleif r, ok2 : shape.(Rectangle); ok2 {fmt.Printf(矩形的面积是%v\n, r.Area())} else {fmt.Println(接口 shape 不包含 Rectangle 的值)} } 运行结果 PS D:\workspaceGo\src\interface go run .\interfaceTest.go 接口 shape 不包含 Rectangle 的值 矩形的面积是50从运行结果看在没有给接口 shape 赋值的时断言 ok 是 false下面给接口类型变量 shape 正式赋值了则成功执行了 r.Area() 计算了面积。 五、接口运用 接口类型可以作为函数的参数接受参数接口类型可以是任意类型作为 map、结构体等的 value接口类型可以让代码解耦利用接口可以进行提取和抽离出来公共模块提高开发效率等… 六、总结 接口类型在 Go 语言中是非常重要的特性它提供了一种约定和抽象的方式让不同的类型可以用相同的方式处理。在实际开发中有许多用途和场景重要包括 实现多态性让不同类型以相同方式处理提高代码的灵活性和复用性解耦代码通过接口将代码解耦使得不同模块直接依赖较少从而提高代码的可维护性实现设计模式接口类型可以很好的支持如 工厂模式、策略模式等这些模式的实现让代码更加简洁易于维护和理解扩展性和适配器模式通过接口可以很好的扩展程序的功能只需实现相应的方法即可同时接口也可以适用于不同的模块将不同的类型适配成统一的接口类型实现代码的复用和扩展测试和模拟在单元测试中可以利用接口来模拟依赖项实现代码的测试隔离。通过使用接口可以方便的替换真实的依赖实现从而实现对代码的独立测试 总而言之接口类型在 Go 语言中非常灵活和强大它可以帮助我们实现面向接口编程提高代码的灵活性和可复用性减少代码的耦合性使得代码更加清晰、简洁和易于维护。在实际开发中合理地使用接口类型可以使代码更加健壮和可扩展提高开发效率和质量。 现阶段还是对 Go 语言的学习阶段想必有一些地方考虑的不全面本文示例全部是亲自手敲代码并且执行通过。 如有问题还请指教。 评论去告诉我哦一起学习一起进步
http://www.sczhlp.com/news/162991/

相关文章:

  • 国家生物信息数据下载
  • 手机销售网站源码设计网站公司的口号
  • 2025.10.3 NOIP 模拟赛
  • 详细介绍:【数据库知识】TxSQL 主从数据库同步底层原理深度解析
  • 阳江网站建设 公司汝城网站建设
  • 男女做污的事情网站php网站开发工程师找工作
  • 铁岭网站开发华为商城官网手机版app
  • 营销型网站建设策划书怎么写腾讯企点app
  • 建设网站需要支付什么插件费用吗行政单位建设网站方案
  • 网站集约化建设工作打算网页设计目的怎么写
  • 济阳做网站多少钱最爱网
  • 会展网站建设阿里云邮箱企业版登录
  • 自己建设网站平台步骤开源商城app源码
  • 公司网站首页设计模板佛山网络公司 乐云seo
  • 观山湖网站建设dw网站指向邮箱超链接怎么做
  • 简单的个人主页网站制作网络营销策划的定义
  • 公司创建网站多少钱服装商城的网站建设
  • 电子政务网站建设方案品牌营销策划是什么意思
  • 如何查询网站二级页面流量html做企业门户网站
  • 江苏省 建设 注册中心网站首页营销型网站建设合同模板
  • 厦门市建设执业资格注册管理中心网站青岛网页制作设计营销
  • 企业级建站郑州发布
  • 网站的原型图网络营销服务公司
  • 建设在线购物网站ftp 修改网站
  • 网站建设表格的属性建设网站多少钱 郑州
  • 东昌府企业做网站推广网站域名后缀代表什么意思
  • 顺德网站建设公司信息python怎么学
  • 电子商务网站建设大作业无锡电子商城网站设计
  • 网站建设是什么部门宝宝个人网站模板
  • 民宿网站建设怎么自己做购物网站