标签:Println city p1 string fmt name 嵌套 Go 结构
结构体的匿名字段
匿名字段默认会采用类型名作为字段名
结构体体里的字段是唯一的 不能冲突的
一个结构体中同种类型的匿名字段只能有一个
匿名字段:没有名字的字段
package main
import "fmt"
// 匿名字段
// 字段比较少也比较简单的场景
// 不常用!!!
type person struct {
// name string
// age int
string
int
}
func main() {
p1 := person{
"紫霞",
18,
}
fmt.Println(p1)
fmt.Println(p1.string)
fmt.Println(p1.int)
}
嵌套结构体
嵌套匿名字段
嵌套结构体的字段名冲突
匿名嵌套结构体
匿名嵌套结构体的字段冲突
package main
import "fmt"
// 嵌套结构体
type address struct {
province string
city string
}
type workPlace struct {
province string
city string
}
type person struct {
name string
age int
// province string
// city string
// addr address
address // 匿名嵌套结构体
// address:aaddress
workPlace
}
type company struct {
name string
// province string
// city string
addr address
}
func main() {
p1 := person{
name: "李霞",
age: 12,
// addr: address{
address: address{
province: "陕西省",
city: "西安市",
},
}
fmt.Println(p1)
// fmt.Println(p1.name, p1.addr.city)
fmt.Println(p1.name, p1.address.city)
// fmt.Println(p1.city) // 先在自己结构体找这个字段,找不到就去匿名嵌套的结构体中查找该字段
fmt.Println(p1.address.city)
fmt.Println(p1.workPlace.city)
}
结构体的“继承”
package main
import "fmt"
// 结构体模拟实现其他语言中的"继承"
type animal struct {
name string
}
// 给animal实现一个移动的方法
func (a animal) move() {
fmt.Printf("%s会动!\n", a.name)
}
// 狗类
type dog struct {
feet uint8
animal // animal 拥有的方法dog此时也有
}
// 给dog实现一个汪汪汪的方法
func (d dog) wang() {
fmt.Println("汪汪汪~")
fmt.Printf("%s在叫:汪汪汪\n", d.animal.name)
fmt.Printf("%s在叫:汪汪汪\n", d.name)
}
func main() {
d1 := dog{
feet: 4,
animal: animal{name: "小白"},
}
fmt.Println(d1)
d1.wang()
d1.move()
}
标签:Println,city,p1,string,fmt,name,嵌套,Go,结构 来源: https://www.cnblogs.com/QiaoPengjun/p/16339346.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。