golang 結構體指針及賦值


一 實例

func main(){
    type Person struct {
        name  string
        age int
    }
    p1 := &Person{name: "wbw", age: 18}
    fmt.Println((*p1).name)
    fmt.Println(p1.name) //隱式解引用

    p2 := Person{name: "wbw", age: 18}
    fmt.Println(p2.name)

    p3 := p1
    fmt.Println(p3.name)
    p4 := p2
    fmt.Println(p4.name)

    p3.name = "sdfsd"
    fmt.Println((*p1).name)
    fmt.Println(p1.name)
    fmt.Println(p3.name)

    p4.name = "sdfsdss"
    fmt.Println(p2.name)
    fmt.Println(p4.name)


}

 

 

 

二 總結

  • 當結構體原型(p1)獲取的是結構體指針,那么當它給另一個成員賦值(p3)時,p3的改動會導致p1同時改動。就是說此時p1, p3共同指向一個結構體地址
  • 當結構體原型(p2)獲取的只是普通結構體時,那么當它給另一個成員賦值(p4)時,p4的改動不會導致p2的改動。就是說此時p2,p4不是指向同一個結構體地址
  • 當結構體原型(p1)獲取的是結構體指針,那么它可以用指針獲取成員變量((*p1).name),也可以使用隱式解引用(p1.name即可獲取成員變量)。
 
        

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM