010.golang 结构struct
发布时间:2020-12-16 19:18:23 所属栏目:大数据 来源:网络整理
导读:结构struct Go 中的struct与C中的struct非常相似,并且Go没有class 使用 type Name struct{} 定义结构,名称遵循可见性规则 支持指向自身的指针类型成员 支持匿名结构,可用作成员或定义成员变量 匿名结构也可以用于map的值 可以使用字面值对结构进行初始化
结构struct
package main
import (
"fmt"
)
type person struct {
Name string
Age int
}
func main() {
a := person{}
a.Age = 19
a.Name = "xiaoMing"
fmt.Println(a)
b := person{
Name: "daMing",//别忘了加逗号
Age: 20,//别忘了加逗号
}
fmt.Println(b)
b.Age = 23
fmt.Println(b)
updateAge(b)
fmt.Println(b,"new")
//通过指针传递可以进行深度修改
updateOrigenAge(&b)
fmt.Println(b,"new")
//或者,创建结构的时候,前面加上取地址符号,参数就变成了指向结构的指针
c := &person{
Name: "laoWang",//别忘了加逗号
Age: 58,//别忘了加逗号
}
fmt.Println(c)
//修改指针指向的某个属性,可以直接操作,不需要再取地址
c.Name = "xiaoWang"
updateOrigenAge(c)
fmt.Println(c,"new")
}
func updateAge(b person) {
b.Age = 3
fmt.Println(b,"updateAge")
}
func updateOrigenAge(b *person) {
b.Age = 5
fmt.Println(b,"updateOrigenAge")
}
package main
import (
"fmt"
)
type person struct {
Name string
Age int
//匿名结构
Contact struct {
Phone,City string
}
}
func main() {
//匿名结构
a := struct {
Name string
Age int
}{
Name: "xiaoMing",Age: 18,}
fmt.Println(a)
fmt.Println("----------------------")
b := person{
Name: "xiaoWang",}
b.Age = 19
b.Contact.City = "beiJing"
b.Contact.Phone = "894401224"
fmt.Println(b)
}
package main
import (
"fmt"
)
type person struct {
string
int
}
func main() {
//匿名属性时,声明并初始化时要严格按照属性类型顺序进行赋值
a := person{"xiaoMing", 12}
fmt.Println(a)
}
package main
import (
"fmt"
)
type person struct {
Name string
Age int
}
func main() {
//只有同一结构的变量才可以进行判断是否相等
//同一结构,各个属性相等,即为相等
a := person{"xiaoMing", 12}
b := person{"xiaoMing", 13}
fmt.Println(b == a)
b.Age = 12
fmt.Println(b == a)
}
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() {
//嵌入字段赋值:human: human{Sex: 0}
a := teacher{Name: "laoMing",Age: 48,human: human{Sex: 0}}
b := student{Name: "xiaoMing",Age: 18,human: human{Sex: 1}}
fmt.Println("a",a)
fmt.Println("b",b)
a.Name = "laoWang"
a.Age = 50
a.human.Sex = 1
fmt.Println("a",a)
}
package main
import (
"fmt"
)
type human struct {
Sex int
Name string
}
type student struct {
//嵌入字段
human
Name string
Age int
}
func main() {
//嵌入字段属性与外层属性字段相同时
a := student{Name: "laoMing",human: human{Sex: 0,Name: "lao.Ming"}}
b := student{Age: 18,human: human{Sex: 1,Name: "xiao.Ming"}}
c := student{Name: "xiao.Ming",human: human{Sex: 1}}
//获取Name
fmt.Println("a.Name=",a.Name,"|","a.human.Name=",a.human.Name)
fmt.Println("b.Name=",b.Name,"b.human.Name=",b.human.Name)
fmt.Println("c.Name=",c.Name,"c.human.Name=",c.human.Name)
} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |