1type T1 int
2type T2 T1
1type T = string
1// 定义结构体
2type Employee struct {
3    Id   string
4    Name string
5    Age  int
6}
 1// 三种初始化的方式
2func TestCreateObj(t *testing.T) {
3    e := Employee{"001", "yunsheng", 32} // 省略字段名。不建议
4    t.Log(e)
5
6    e2 := Employee{Name: "World", Age: 66}
7    t.Log(e2)
8
9    e3 := new(Employee) // 返回指针
10    e3.Age = 111
11    t.Log(e3)
12
13    // 三种方式创建的对象的类型
14    t.Logf("e : %T", e)   // obj_test.Employee
15    t.Logf("e2 : %T", e2) // obj_test.Employee
16    t.Logf("e3 : %T", e3) // *obj_test.Employee
17}
1e2 := Employee{Name: "World", Age: 66}
1    e2 := Employee{
2        Name: "World",
3        Age:  66,
4    }
1e3 := new(Employee) // 返回指针
2e3.Age = 111
1    type Empty struct {}
2    var e Empty
3    t.Log(unsafe.Sizeof(e))
1    var c = make(chan Empty) // 声明一个元素类型为Empty的channel
2    c <- Empty{}             // 向channel写入一个“事件”
1    type Reader struct {
2        ReaderName string
3        Age int
4    }
5
6    type Book struct {
7        BookName string
8        Reader Reader
9    }
1    type Book struct {
2        BookName string
3        Reader
4    }
1    reader := Reader{"yunsheng", 20}
2    book := Book{"禅与摩托车维修艺术", reader}
3    t.Log(book.Reader.ReaderName)
4    t.Log(book.ReaderName)
1var book Book
1book := Book{"禅与摩托车维修艺术", reader}
1book := Book{BookName:"禅与摩托车维修艺术", Reader: reader}
1type Employee struct {
2    Id   string `json:"id"`
3    Name string `json:"name"`
4    Age  int `json:"age,omitempty"`
5}
1key1:"value1" key2:"value2"