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

企业网站托管价格中小型网络组建

企业网站托管价格,中小型网络组建,查看wordpress栏目id,个人网站排版设计一、GoLang 中的接口 1、GoLang 中的接口 在 Go 语言中接口#xff08;interface#xff09;是一种类型#xff0c;一种抽象的类型接口#xff08;interface#xff09;定义了一个对象的行为规范#xff0c;只定义规范不实现#xff0c;由具体的对象来实现规范的细节实…一、GoLang 中的接口 1、GoLang 中的接口 在 Go 语言中接口interface是一种类型一种抽象的类型接口interface定义了一个对象的行为规范只定义规范不实现由具体的对象来实现规范的细节实现接口的条件 一个对象只要全部实现了接口中的方法那么就实现了这个接口换句话说接口就是一个需要实现的方法列表 2、为什么要使用接口 上面的代码中定义了猫和狗然后它们都会叫你会发现 main 函数中明显有重复的代码如果我们后续在加上猪青蛙等动物的话我们的代码还会一直重复下去那我们能不能把它们当成“能叫的动物”来处理呢 package mainimport fmttype Cat struct {Name string }func (c Cat) Say() string {return c.Name :喵喵喵}type Dog struct {Name string }func (d Dog) Say() string {return d.Name :汪汪汪}func main() {c : Cat{Name: 小白猫} // 小白猫喵喵喵fmt.Println(c.Say())d : Dog{阿黄}fmt.Println(d.Say()) // 阿黄: 汪汪汪 } /* 小白猫喵喵喵 阿黄: 汪汪汪*/ 3、定义一个Usber 接口 定义一个 Usber 接口让 Phone 和 Camera 结构实现这个接口 package mainimport fmt//1、接口是一个规范 type Usber interface {start()stop() }//2、如果接口里面有方法的话必要要通过结构体或者通过自定义类型实现这个接口 func (p Phone) start() {fmt.Println(p.Name, 启动) } func (p Phone) stop() {fmt.Println(p.Name, 关机) }func main() {p : Phone{Name: 华为手机,}var p1 Usber // golang中接口就是一个数据类型p1 p // 表示手机实现Usb接口p1.start()p1.stop() } /* 华为手机 启动 华为手机 关机*/ 4、go 中类 Go 语言中没有类的概念也不支持类的继承等面向对象的概念Go 语言中通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性 二、空接口 1、空接口说明 golang 中空接口也可以直接当做类型来使用可以表示任意类型Golang 中的接口可以不定义任何方法没有定义任何方法的接口就是空接口空接口表示没有任何约束因此任何类型变量都可以实现空接口空接口在实际项目中用的是非常多的用空接口可以表示任意数据类型 2、空接口作为函数的参数 package mainimport fmt//空接口作为函数的参数 func show(a interface{}){fmt.Printf(值%v 类型%T\n,a,a) }func main() {show(20) // 值:20 类型:intshow(你好golang) // 值:你好golang 类型:stringslice : []int{1, 2, 34, 4}show(slice) // 值:[1 2 34 4] 类型:[]int } 3、切片实现空接口 pakcage mainimport fmtfunc main() {var slice []interface{}{Snail, 20, true, 32.2}fmt.Println(slice) // [Snail 20 true 32.2] } 4、map 的值实现空接口 package mainimport fmtfunc main() {//空接口作为 map 值var studentInfo make(map[string]interface{})studentInfo[name] SnailstudentInfo[age] 18studentInfo[married] falsefmt.Println(studentInfo)// [age:18 married:false name: Snail] } 三、类型断言 一个接口的值简称接口值是由一个具体类型和具体类型的值两部分组成的这两部分分别称为接口的动态类型和动态值如果我们想要判断空接口中值的类型那么这个时候就可以使用类型断言其语法格式x.(T) x:表示类型为interface{}的变量T:表示断言x可能是的类型 package mainimport fmtfunc main() {var x interface{}x Hello GoLangv,ok : x.(string)if ok {fmt.PrintIn(v)}else {fmt.PrintIn(非字符串类型)} } 四、值接收者和指针接收者 1、值接收者 当方法作用于类型接收者时Go语言会在代码运行时将接收者的值复制一份在值类型接收者的方法中可以获取接收者的成员值但修改操作只是针对副本无法修改接收者变量本身 package mainimport fmttype Usb interface {Start()Stop() }type Phone struct{Name string }func (p Phone) Start(){fmt.PrintIn(p.Name,开始工作) }func (p Phone) Stop(){fmt.PrintIn(p.Name,停止) }func main() {phone1 : Phone{ //1、实例化值类型Name:小米手机}var p1 Usb phone1 //phone1实现了Usb接口phone1是Phone类型p1.Start()phone2 : Phone{ // 二实例化指针类型Name: 苹果手机,}var p2 Usb phone2 //phone2 实现了 Usb 接口 pho} 2、指针接收者 指针类型的接收者由一个结构体的指针组成由于指针的特性调用方法时修改接收者指针的任意成员变量在方法结束后修改都是有效的这种方式就十分接近于其他语言中面向对象中的this或者self例如我们为Person添加一个SetAge方法来修改实例变量的年龄 package main import fmt type Usb interface {Start()Stop() } type Phone struct {Name string } func (p *Phone) Start() {fmt.Println(p.Name, 开始工作) } func (p *Phone) Stop() {fmt.Println(phone 停止) } func main() {/*错误写法phone1 : Phone{Name: 小米手机,}var p1 Usb phone1p1.Start()*///正确写法phone2 : Phone{ // 指针类型接收者只能传入指针类型不能传入值类型Name: 苹果手机,}var p2 Usb phone2 //phone2 实现了 Usb 接口 phone2 是 *Phone 类型p2.Start()//苹果手机 开始工作 }3、值类型接收者使用时机 需要修改接收者中的值接收者是拷贝代价比较大的大对象保证一致性如果有某个方法使用了指针接收者那么其他的方法也应该使用指针接收者 五、一个结构体实现多个接口 GoLang中一个结构体也可以实现多个接口 package main import fmt type AInterface interface {GetInfo() string } type BInterface interface {SetInfo(string, int) } type People struct {Name stringAge int } func (p People) GetInfo() string {return fmt.Sprintf(姓名:%v 年龄:%d, p.Name, p.Age) } func (p *People) SetInfo(name string, age int) {p.Name namep.Age age } func main() {var people People{Name: Snail,Age: 20,}// people 实现了 AInterface 和 BInterfacevar p1 AInterface peoplevar p2 BInterface peoplefmt.Println(p1.GetInfo())p2.SetInfo(pupu, 21) // 姓名:Snail 年龄:20fmt.Println(p1.GetInfo()) // 姓名:pupu 年龄:21 }六、接口嵌套继承 接口与接口间可以通过嵌套创造出新的接口 package main import fmt type SayInterface interface {say() } type MoveInterface interface {move() } // 接口嵌套 type Animal interface {SayInterfaceMoveInterface } type Cat struct {name string } func (c Cat) say() {fmt.Println(喵喵喵) } func (c Cat) move() {fmt.Println(猫会动) } func main() {var x Animalx Cat{name: 花花}x.move() // 猫会动x.say() // 喵喵喵 }
http://www.zqtcl.cn/news/734110/

相关文章:

  • 烟台做网站多少钱.net网站做增删改
  • 什么网站专门做软件的深圳电商网站制作
  • 局域网做网站家装公司哪家比较好
  • 免费的行情软件网站在线使用wordpress视频分享
  • 内容平台策划书网站优化公司推荐
  • 怎么在阿里巴巴网站做公司wordpress伪静态404
  • 配置 tomcat 做网站网站建设用什么语言
  • 大型的营销型网站建设怎么选择网站建设公司
  • 怎么用网站源码建站友情链接交换方式有哪些
  • 国外免费网站服务器链接幼教网站建设分析
  • 做药品网站有哪些陕西专业网站建设价格
  • 网络公司做网站网站 服务器选择
  • 湖南省重点建设项目办公室网站河南省住建局官网
  • 建设网站企业网上银行登录入口官方论坛系统
  • 嘉定建设机械网站合肥制作网页设计
  • 外链网站有哪些空港经济区内的建设工程网站
  • 企业网站开发价阿里云快速备份网站
  • 大型电子商务网站建设成本ai网页生成
  • 网页播放视频 网站开发常用网站搜索引擎
  • 制作一个购物网站要多少钱做创意小视频的网站
  • 淇县网站建设软件定制流程
  • 17网站一起做网店代发流程wordpress悬浮 联系
  • 如何查网站外链快速开发平台 免费开源
  • 做网站有哪些流程怎么做网站电影
  • 做街机棋牌上什么网站发广告网站策划和运营
  • 建网站是什么专业类别阳江网红人物
  • 网站建设工作描述株洲市建设质监站网站
  • 做网站 橙色怎么搭配吐鲁番市网站建设
  • 企业信息网站衡阳高端网站建设
  • 中小学网站建设小程序开发费用是多少