go语言中结构struct


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

  

优质内容筛选与推荐>>
1、Node学习
2、Apache Shiro 使用手册(二)Shiro 认证(转发:http://kdboy.iteye.com/blog/1154652)
3、策略模式
4、CF498C. Array and Operations [二分图]
5、Linux下基本操作


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号