go語言之進階篇結構體指針類型匿名字段

package main

import "fmt"

type Person struct {
  name string 
  sex byte
  age int
}

type Student struct {
  *Person
  id int
  addr string
} 

func main() {
  s1 := Student{
    &Person{
      name: "a",
      sex:  'm',
      age:  18,
    },
    11,
    "aaa",
  }

  fmt.Println(s1.name, s1.sex, s1.age, s1.id, s1.addr)

  var s2 Student
  s2.Person = new(Person)
  s2.name = "yoyo"
  s2.sex = 'm'
  s2.age = 18
  s2.id = 222
  s2.addr = "sz"

  fmt.Println(s2, s2.name, s2.sex, s2.age, s2.id, s2.addr, s2.Person, &s2.Person)

  var s3 Student
  s3.Person = new(Person)
  s3.Person.name = "aaa"
  s3.Person.sex = 'f'
  s3.Person.age = 18
  s3.id = 11
  s2.addr = "sz"
  fmt.Println(s3, s3.name, s3.sex, s3.age, s3.id, s3.addr, s3.Person, &s3.Person)
}

結果

a 109 18 11 aaa
{0xc000004500 222 sz} yoyo 109 18 222 sz &{yoyo 109 18} 0xc0000044e0
{0xc000004580 11 } aaa 102 18 11  &{aaa 102 18} 0xc000004560

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章