package main
import "fmt"
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).Add(4)
s.Add(3)
}
Output:
1234
解析:
defer只能执行一个函数。defer后是一个链式函数而且defer是一个压栈的输入,4被defer执行,1和2直接被执行,所以打印1234