分享

Go 语言系列33:静态类型与动态类型

 菜籽爱编程 2022-04-27

静态类型

静态类型(static type) 就是变量声明时候的类型。例如:

// int 是静态类型
var number int
// string 也是静态类型
var name string


动态类型

动态类型(concrete type) 是程序运行时系统才能看见的类型。例如:

// in 的静态类型为 interface{}
var in interface{}
// in 的静态类型为 interface{} 动态类型为 int
in = 100
// in 的静态类型为 interface{} 动态类型为 string
in = "菜籽爱编程"

通过上面的例子,可以看到我们定义了一个空接口 in ,它的静态类型永远是 interface{} ,但它可以接受任何类型,接受整型数据时,它的动态类型就为 int ;接受字符串型数据时,它的动态类型就变为 string

接口组成

每个接口变量实际上都是由一 pair 对组成,其中记录了实际变量的值和类型。例如:

var number int = 100

这里声明了一个类型为 int 的变量,变量名叫 number 值为 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

参考文献:

[1] Alan A. A. Donovan; Brian W. Kernighan, Go 程序设计语言, Translated by 李道兵, 高博, 庞向才, 金鑫鑫 and 林齐斌, 机械工业出版社, 2017.

👇周一至周五更新,期待你的关注👇

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多