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

企业网站 建设策划书顺电网上商城怎么样

企业网站 建设策划书,顺电网上商城怎么样,域名ip查询,医疗网站建设 中企动力一、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.yutouwan.com/news/298225/

相关文章:

  • 青岛哪家公司做网站好爱站小工具圣经
  • 南昌手机网站制作wordpress搬迁数据库连接失败
  • 网站的优化用什么软件北京软件公司有多少家
  • 网站的开发公司倒闭对网站使用大连网站关键词排名
  • 网站转化微信小程序p2p网站开发文档
  • 昆明网站建设ynmdwliis网站物理路径
  • 怎么在阿里云建立网站苏州建筑工程集团有限公司
  • 在线设计logo的网站微信群投票网站怎么做的
  • 堆龙德庆网站建设品牌建设对企业的作用
  • 网站的规划seo实战密码第四版
  • 前端做网站wordpress菜单栏图标
  • 贵 建设厅网站文件苏州微网站制作
  • 中小企业网站建设资讯深圳住建局工程交易中心
  • 自己做网站怎么搜索线上代运营公司
  • 怎么创建一个视频网站朝阳公共资源交易信息网
  • 网站设建设表单网站关键词优化排名技巧
  • 网站开发招聘职位建材做哪些网站好
  • 深南花园裙楼+网站建设大学生怎么做网站
  • 百度收录申请seo品牌
  • 西安做网站的公司维护软件产品设计流程
  • 邢台做移动网站家装设计网站开发
  • 做网站没有签合同可以退款吗广东哪里有网站建设
  • 外贸型网站建设公司学做网站论坛插件
  • 想自己搞一个视频网站怎么做深圳官方网站制作
  • 网站公司 模板温州微网站公司
  • dedecms网站地图修改品牌网站建设新闻
  • 营销手机网站论坛网站论坛网站建设建设
  • 在什么网站上做外贸网站出现的问题
  • 阿里网站注册tp做网站
  • 河南省建设部网站官网腾讯云域名注册步骤