简单地区分编程语言的动静态类型与强弱类型
动态、静态类型
动态与静态:在编译的时候就能清楚地知道一个变量的类型。
如果一个语言的变量的类型能在运行时动态地改变,那么它是动态语言。否则是静态语言。
强、弱类型
强、弱类型:是否允许隐式的类型转换。
如果一个语言的表达式在求值时不允许操作数类型的自动转换,那么它是强类型。否则是弱类型。
举例
Javascript 是动态、弱类型语言
弱类型举例:自动将数值转换成字符串
> 1+"2"
< "12"
动态类型举例:变量可以在运行时改变类型
> var a;
> undefined
> a = 1;
< 1
> a = "a";
< "a"
Go 是静态、强类型语言
强类型举例:字符串不会转换成数值再相加
> 1 + "2"
< cannot convert "2" (type untyped string) to type int
< invalid operation: 1 + "2" (mismatched types int and string)
静态类型举例:变量类型在定义时就确定下来
> var a string
> a = 1
< cannot use 1 (type int) as type string in assignment
一些常见语言的类型划分图
图片来源:弱类型、强类型、动态类型、静态类型语言的区别是什么? - 吴亦凡的回答 - 知乎