關於defer執行順序問題

EvansChang發表於2017-11-28

最近看到這麼一段程式碼,自己思考了下輸出結果,但是我發現我自己思考出來的跟實際結果不一致,請問有人能幫我說明下這裡的原理嗎

type Slice []int
func NewSlice() Slice {
    return make(Slice, 0)
}
func (s* Slice) Add(elem int) *Slice {
    *s = append(*s, elem)
    fmt.Print(elem)
    return s
}
func main() {  
    s := NewSlice()
    defer s.Add(1).Add(2)
    s.Add(3)
}
//執行結果為132
更多原創文章乾貨分享,請關注公眾號
  • 關於defer執行順序問題
  • 加微信實戰群請加微信(註明:實戰群):gocnio

相關文章