當你想實現一個通用函數的時候,會考慮傳入的參數是否是固定類型的,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")
    }
}複製代碼