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);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。