第7课 Go结构struct
2016-08-04 20:40
267 查看
package main import "fmt" /* 结构struct -Go中的struct与C中的struct非常相似,并且Go没有class -使用type <Name> struct{}定义结构,名称遵循可见性规则 -支持指向自身的指针类型成员 -支持匿名结构,可用作成员定义成员变量 -匿名结构也可以用于map的值 -可以使用字面值对结构进行初始化 -允许直接通过指针来读写结构成员 -相同类型的成员可进行直接拷贝复制 -支持==与!=运算符,但不支持> 或 < -支持你名字段,本质上是定义了以某个类型名为名称的字段 -嵌入结构作为你名字段看起来像继承,但不是继承 -可以使用你名字段指针 */ type person struct { Name string Age int } type person_temp struct { Name string Age int Contact struct { Phone, City string } //嵌套匿名结构 } func main() { a := person{} a.Age = 13 a.Name = "joe" b := person{ Name: "joe", Age: 19, } //字面值的初始化 A(&a) fmt.Println("------") fmt.Println(b) fmt.Println("------") c := person_temp{} c.Age = 20 c.Name = "Lihuidi" c.Contact.City = "邯郸" c.Contact.Phone = "15684505257" //对嵌套匿名结构的结构的初始化方法 fmt.Println(c) fmt.Println("------") fmt.Println(a == b) //判断a和b是否相等 } func A(per *person) { fmt.Println("A", per) } //结构支持匿名结构
package main import "fmt" type human struct { Sex int } type teacher struct { human Name string Age int } type student struct { human //本质上把结构名称作为字段名称 Name string Age int } //结构的嵌入 func main() { a := teacher{Name: "joe", Age: 19, human: human{Sex: 1}} //操作方法! b := student{Name: "joe", Age: 20, human: human{Sex: 0}} //请记住这个操作方法! a.Name = "joe2" a.Age = 21 a.Sex = 0 //可见,嵌入之后所有的变量都属于新的结构了 fmt.Println(a, b) }
package main import ( "fmt" ) type A struct { B Name string } type B struct { Name string } func main() { a := A{Name: "A", B: B{Name: "B"}} fmt.Println(a.Name, a.B.Name) //成功取到了同名字段,如果最高级不存在Name,会自动往下找,知道找到Name }
相关文章推荐
- Go语言笔记:struct结构遍历
- Go语言核心之美 3.4-Struct结构体
- Go编程基础——结构struct
- Go语言核心之美 3.4-Struct结构体
- go语言中结构struct
- GO 学习笔记(四)struct 结构、slice
- Go编程基础—结构(struct)
- go struct结构的实例
- DRAWITEMSTRUCT结构文档
- c语言 结构(struct)和联合(union)简介
- 结构struct(复习笔记)
- [Linux][2011-5-25]Linux "struct stat" 结构 & stat(),lstat(),fstat()
- [Go]程序结构——声明
- go struct 类型
- go struct作为值函数参数需要注意的地方
- 编写GO的WEB开发框架 (十五): 目录结构及如何使用ecgo开发项目
- 025day(学习结构(struct))
- GO语言的进阶之路-go的程序结构以及包简介
- struct socket 结构详解
- struct结构对齐