當你想實現一個通用函數的時候,會考慮傳入的參數是否是固定類型的,Go正好提供了interface{}類型,它能夠表明任意類型。當你不肯定用什麼類型合適的時候,用它就對了。舉個簡單的例子:運維
type Container struct {
elem []interface{}
}
func (this *Container) Put(v interface{}) {
*this = append(*this, elem)
}
// 取出最後一個元素
func (this *Container) Get() interface{} {
ret := (*c)[len(*c)-1]
*c = (*c)[:len(*c)-1]
return ret
}
func assertExample() {
container := &Container{}
container.Put(1)
container.Put("Hello")
_, ok := container.Get().(int);!ok {
fmt.Println("Unable to read an int from container")
}
}複製代碼