go语言中结构struct
发布时间:2020-12-16 18:02:10 所属栏目:大数据 来源:网络整理
导读:package main;import "fmt"//结构struct//定义Person结构type Person struct {name string;age int;};//结构里面还有一个匿名结构type Person2 struct {name string;age int;contact struct {phone string;addr string;}}//结构里的匿名字段type Person3 str
package main;
import "fmt"
//结构struct
//定义Person结构
type Person struct {
name string;
age int;
};
//结构里面还有一个匿名结构
type Person2 struct {
name string;
age int;
contact struct {
phone string;
addr string;
}
}
//结构里的匿名字段
type Person3 struct {
string;
int;
}
//嵌入结构,组合
type Person4 struct {
Person;
phone string;
addr string;
}
func main() {
a := Person{};
a.name = "test";
a.age = 27;
fmt.Println(a);
//简单初始化方式
b := Person{
name: "test2",age: 24,};
fmt.Println(b);
//调用函数A,这里是传递的值拷贝
A(b);
fmt.Println(b);
//调用函数B,这里传递的是地址
B(&b);
fmt.Println(b);
//对结构初始化的时候,一般直接用取地址符号
c := &Person{
name: "test3",age: 25,};
//在调用函数时,就不需要写取地址&符号
B(c);
fmt.Println(c);
//匿名结构
d := struct {
name string;
age int;
}{
name: "test4",age: 22,};
fmt.Println(d);
e := Person2{
name: "test5",age: 33,};
//匿名结构的初始化
e.contact.phone = "1388888888";
e.contact.addr = "地址";
fmt.Println(e);
//注意字段的顺序
f := Person3{
"test6",55,};
fmt.Println(f);
//两个结构间的比较
g := f;
fmt.Println(g == f);
//嵌入结构的初始化
h := Person4{
Person: Person{name: "test7",age: 66},phone: "139999999",addr: "地址2",};
fmt.Println(h);
h.Person.name = "哈哈";
h.Person.age = 99;
fmt.Println(h);
//可以对name和age直接操作
h.name = "haohao";
h.age = 88;
fmt.Println(h);
}
func A(p Person) {
p.age = 33;
fmt.Println(p);
}
func B(p *Person) {
p.age = 33;
fmt.Println(p);
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |