1. 程式人生 > >Go中的結構實現它的的寫法註意事項

Go中的結構實現它的的寫法註意事項

pre 值傳遞 為什麽 div 錯誤 寫法 nta () clas

下面一個例子:

type Student struct {
    name string
    age  int
}

func (s Student) printAge() {
    fmt.Println(s.age)
}
func (s Student) setAge(age int) {
    s.age = age
}

func main() {

    var P Student = Student{"huang", 15}
    P.setAge(10)
    P.printAge()

這段代碼輸出多少了,答案是15,那為什麽

P.setAge(10)
調用了這個setAge方法,而age還沒改變呢?
上述的代碼Go沒有報錯,這就說明代碼沒有錯誤,只能說有bug,GO在上面表明只是值傳遞,假如要實現一個類似Class類型的方法,只有指針去改變了。

type Student struct {
    name string
    age  int
}

func (s *Student) printAge() {
    fmt.Println(s.age)
}
func (s *Student) setAge(age int) {
    s.age = age
}

func main() {

    var P Student = Student{"huang", 15}
    P.setAge(10)
    P.printAge()

}

這樣就行。



Go中的結構實現它的的寫法註意事項