24.Go面向對象-空接口
8 空接口
空接口(
interface{}
)不包含任何的方法,正因為如此,所有的類型都實作了空接口,是以空接口可以存儲任意類型的數值。
例如:
// 空接口萬能類型,儲存任意類型的值
var i interface{} = 1
fmt.Println("i = ", i)
i = "abc"
fmt.Println("i = ", i)
當函數可以接受任意的對象執行個體時,我們會将其聲明為
interface{}
,最典型的例子是标準庫
fmt
中
PrintXXX
系列的函數,例如:
func Printf(format string, a ...interface{}) (n int, err error) {
return Fprintf(os.Stdout, format, a...)
}
func Println(a ...interface{}) (n int, err error) {
return Fprintln(os.Stdout, a...)
}
如果自己定義函數,可以如下:
func Test(arg ...interface{}) {
}