Skip to content

JavaScript vs. Go TypeSystem

xushiwei edited this page Apr 5, 2026 · 1 revision
特性 JavaScript Go
类型系统 动态类型 静态类型
类型检查时机 运行时 编译时
类型声明 可选(默认无需声明) 必须显式声明
类型推断 无原生支持(TS 有) 支持 := 自动推断
基本类型 numberstringbooleannullundefinedsymbolbigint intfloat64stringboolbyterune
数字类型 统一为 number(IEEE 754) 细分为 int8/16/32/64float32/64uint
空值 null / undefined(两种) nil(仅用于引用类型)
类型转换 隐式转换(自动强制转换) 必须显式转换,无隐式转换
数组/切片 动态数组,元素类型可混合 固定类型切片 []T,元素类型统一
对象/结构体 对象(键值对,灵活) struct(字段类型固定)
接口 无原生接口(鸭子类型) interface(隐式实现,结构子类型)
泛型 无原生支持(TS 有) 支持(Go 1.18+)
枚举 无原生 enum(用对象模拟) 无原生 enum(用 iota + const 模拟)
指针 无指针概念 支持指针 *T,但无指针运算
typeof / 类型断言 typeofinstanceof 类型断言 x.(T)、类型选择 switch x.(type)
Map 类型 Object / Map(键类型任意) map[K]V(键值类型固定)
函数类型 一等公民,参数类型不限 一等公民,参数/返回值类型严格声明
零值 undefined(未赋值变量) 每种类型有明确零值(如 0""falsenil
类型安全性 低(运行时才报错) 高(编译期拦截大量错误)

Clone this wiki locally