12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- package main
- import "fmt"
- type Book struct {
- title, author string
- pages int
- }
- func main() {
- // {
- // //指针
- // p := new(int)
- // fmt.Println(p, *p)
- // b := 1
- // q := &b
- // fmt.Println(q, *q)
- // }
- // {
- // //结构体
- // book := Book{"Go语言101", "老貘", 256}
- // fmt.Println(book) // {Go语言101 老貘 256}
- // // 使用带字段名的组合字面量来表示结构体值。
- // book = Book{author: "老貘", pages: 256, title: "Go语言101"}
- // // title和author字段的值都为空字符串"",pages字段的值为0。
- // book = Book{}
- // // title字段空字符串"",pages字段为0。
- // book = Book{author: "老貘"}
- // // 使用选择器来访问和修改字段值。
- // var book2 Book // <=> book2 := Book{}
- // book2.author = "Tapir"
- // book2.pages = 300
- // fmt.Println(book2.pages) // 300
- // var _ = Book{
- // author: "老貘",
- // pages: 256,
- // title: "Go语言101", // 这里行尾的逗号不可省略
- // }
- // }
- {
- //在字段选择器中,属主结构体值可以是指针,它将被隐式解引用
- type Book struct {
- pages int
- }
- book1 := &Book{100} // book1是一个指针
- book2 := new(Book) // book2是另外一个指针 new 新建的是指针
- fmt.Println(book1, book2)
- // 像使用结构值一样来使用结构体值的指针。
- book2.pages = book1.pages
- fmt.Println(book1.pages == book2.pages)
- // 上一行等价于下一行。换句话说,上一行
- // 两个选择器中的指针属主将被自动解引用。
- (*book2).pages = (*book1).pages
- }
- }
|