21.1 靜态類型(static type)
靜态類型就是變量聲明時候的類型。例如:
// int 是靜态類型
var number int
// string 也是靜态類型
var name string
21.2 動态類型(concrete type)
動态類型是程式運作時系統才能看見的類型。例如:
// in 的靜态類型為 interface{}
var in interface{}
// in 的靜态類型為 interface{} 動态類型為 int
in = 100
// in 的靜态類型為 interface{} 動态類型為 string
in = "《從0到Go語言微服務架構師訓練營》"
通過上面的例子,可以看到我們定義了一個空接口
in
,它的靜态類型永遠是
interface{}
,但它可以接受任何類型,接受整型資料時,它的動态類型就為
int
;接受字元串型資料時,它的動态類型就變為
string
。
21.3 接口組成
var number int = 100
package main
import "fmt"
func main() {
number := (int)(100)
// 或者寫成 number := (interface{})(100)
fmt.Printf("number type: %T, data: %v", number, number)
}
number type: int, data: 100