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

专业3合1网站建设如何开通微信商城

专业3合1网站建设,如何开通微信商城,网站的内容与功能设计,服务器购买一台多少钱概述 严格意义上说,GO语言中没有类(class)的概念,但是我们可以将结构体比作为类,因为在结构体中可以添加属性(成员),方法(函数)。 面向对象编程的好处比较多,我们先来说一下“继承…

概述

严格意义上说,GO语言中没有类(class)的概念,但是我们可以将结构体比作为类,因为在结构体中可以添加属性(成员),方法(函数)。

面向对象编程的好处比较多,我们先来说一下“继承”,

所谓继承指的是,我们可能会在一些类(结构体)中,写一些重复的成员,我们可以将这些重复的成员,单独的封装到一个类(结构体)中,作为这些类的父类(结构体),我们可以通过如下图来理解:
在这里插入图片描述
当然严格意义上,GO语言中是没有继承的,但是我们可以通过”匿名组合”来实现继承的效果。

一、 匿名字段

一般情况下,定义结构体的时候是字段名与其类型一一对应,实际上Go支持只提供类型,而不写字段名的方式,也就是匿名字段,也称为嵌入字段。

当匿名字段也是一个结构体的时候,那么这个结构体所拥有的全部字段都被隐式地引入了当前定义的这个结构体。

//人
type Person struct {name stringsex byteage int
}//学生
type Student struct {Person //匿名字段,那么默认Student就包含了Person的所有字段id intaddr string
}

Person也就是上面定义的这个Person结构体。

二、 初始化

//人
type Person struct {name stringsex byteage int
}//学生
type Student struct {Person//匿名字段,那么默认Student就包含了Person的所有字段id intaddr string
}func main() {//顺序初始化s1 := Student{Person{"mike",'m',18},1,"sz"}//s1 = {Person:{name:mike sex:109 age:18}id:1 addr:sz}fmt.Printf("s1=%+v\n",s1)//s2 := Student{"mike",'m',18,1,"sz"}//err//部分成员初始化1s3 := Student{Person:Person{"lily",'f',19},id:2}//s3 = {Person:{name:lily sex:102 age:19}id:2 addr:}fmt.Printf("s3=%+v\n",s3)//部分成员初始化2s4 := Student{Person:Person{name:"tom"},id:3}//s4 = {Person:{name:tomsex:0age:0}id:3addr:}fmt.Printf("s4=%+v\n",s4)
}

然后我们在main里面调用Student就能直接对Person里面的属性赋值。

三、 成员的操作

var s1 Student//变量声明
//给成员赋值
s1.name = "mike"//等价于s1.Person.name="mike"
s1.sex = 'm'
s1.age = 18
s1.id = 1
s1.addr = "sz"
fmt.Println(s1) //{{mike 109 18}1 sz}
var s2 Student//变量声明
s2.Person = Person{"lily",'f',19}
s2.id = 2
s2.addr = "bj"
fmt.Println(s2) //{{lily 102 19}2 bj}

或者我们声明一个Student的变量也能调用它里面的属性。

四、 同名字段

//人
type Person struct{name stringsex byteage int
}//学生
type Student struct{Person //匿名字段,那么默认Student就包含了Person的所有字段id intaddr stringname string //和Person中的name同名
}func main(){var s Student//变量声明//给Student的name,还是给Person赋值?s.name = "mike"//{Person:{name:sex:0age:0}id:0addr:name:mike}fmt.Printf("%+v\n",s)//默认只会给最外层的成员赋值//给匿名同名成员赋值,需要显示调用s.Person.name = "yoyo"//Person:{name:yoyosex:0age:0}id:0addr:name:mike}fmt.Printf("%+v\n",s)
}

如果命名重名的话我们调用只会给最外层的使用,也就是Student,如果说你要给Person赋值的话得明确表示。s.Person.name=“张三”。

五、 其它匿名字段

1. 非结构体类型
所有的内置类型和自定义类型都是可以作为匿名字段的:

type mystr string//自定义类型
type Person struct {name stringsex byteage int
}
type Student struct {Person //匿名字段,结构体类型int //匿名字段,内置类型mystr //匿名字段,自定义类型
}
func main() {//初始化s1 := Student{Person{"mike",'m',18},1,"bj"}//{Person:{name:mikesex:109age:18}int:1mystr:bj}fmt.Printf("%+v\n",s1)//成员的操作,打印结果:mike,m,18,1,bjfmt.Printf("%s,%c,%d,%d,%s\n",s1.name,s1.sex,s1.age,s1.int,s1.mystr)
}

不一样要结构体才能作为匿名字段,其实定义一个类型也是一样的。

2. 结构体指针类型

type Person struct { //人name stringsex byteage int
}
type Student struct {//学生*Person //匿名字段,结构体指针类型id intaddr string
}
func main() {//初始化s1 := Student{&Person{"mike",'m',18},1,"bj"}//{Person:0xc0420023e0id:1addr:bj}fmt.Printf("%+v\n",s1)//mike,m,18fmt.Printf("%s,%c,%d\n",s1.name,s1.sex,s1.age)//声明变量var s2 Students2.Person = new(Person)//分配空间s2.name = "yoyo"s2.sex = 'f's2.age = 20s2.id = 2s2.addr = "sz"//yoyo10220220fmt.Println(s2.name,s2.sex,s2.age,s2.id,s2.age)
}
http://www.15wanjia.com/news/177866.html

相关文章:

  • 动易网站无法安装思乐网站建设
  • 电子商务网站设计与管理建设部网站上标准合同
  • 电商网站建设报价成都机械网站制作
  • 家政服务网站建设方案保温杯软文营销300字
  • 家具网站首页模板wordpress 更新很慢
  • 上传文档的网站国外网站建设 网站
  • 网站建设代码标准深圳企业网站seo
  • 电子商务网站推广的方式有哪些北京各大网站推广平台哪家好
  • 山西建设集团网站公司网站制作天强科技
  • 无锡网站建设外包优势在哪里能找到做网站的人
  • 给别人建设网站的注意事项seo如何快速排名
  • 怎样做旅游城市住宿网站想注册一个设计网站吗
  • 建立网站 营业执照电子公章印章在线制作网站
  • 做网站排版做物流公司网站哪家好
  • 做外贸现在一般都通过哪些网站seo搜索引擎优化哪家好
  • 手机端网站建站流程服务器查询
  • 公司网站建设的目的和意义博物馆网站制作
  • 为什么网站 关键词策划电子商务网站推广
  • 网站域名权营销策划的十个步骤
  • 网站分类有哪些学设计的个人网页设计作品欣赏
  • 幸福人寿保险公司官方网站保单查询网站都要备案吗
  • 网站建设硬件预算赤峰浩诚网站建设有限公司
  • 枣庄网站开发公司贵港网站建设动态
  • 虚拟主机手机网站wordpress文章美观
  • 中国建设银行网站 个人做外贸做的很好的网站
  • 电子科技技术支持东莞网站建设网站建设文化怎么样
  • ssh小型购物网站开发广西城市建设学校学生网站
  • 邢台做网站建设优化制作公司金信建设一个商城网站
  • 凡科自助建站系统app嵌入手机网站
  • 网站建设开发人员配置中国宣布入境最新消息2023