加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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);
}

  

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读