Go 中自定义类型与基础类型的赋值兼容性详解

张开发
2026/4/17 1:05:50 15 分钟阅读

分享文章

Go 中自定义类型与基础类型的赋值兼容性详解
在 Go 语言中使用 type 关键字定义的新类型如 type INTEGER int与底层基础类型如 int不兼容不能直接赋值必须通过显式类型转换。 在 go 语言中使用 type 关键字定义的新类型如 type integer int与底层基础类型如 int不兼容不能直接赋值必须通过显式类型转换。Go 的类型系统强调严格类型安全即使两个类型具有完全相同的底层表示例如 int 和 type INTEGER int它们在编译期也被视为完全不同的类型彼此不可隐式转换。这是 Go 区别于 C/C 等语言的关键设计原则旨在避免因类型混淆导致的隐蔽错误。上述代码报错的根本原因在于函数 F 返回的是 (int, int) 类型的元组而变量 aa 和 bb 的类型是 INTEGER一个独立的新类型。Go 不允许在多变量赋值语句中将 int 值直接赋予 INTEGER 变量因此编译器抛出cannot assign int to aa (type INTEGER) in multiple assignment? 正确做法是先接收原始返回值再显式转换 Mokker AI AI产品图添加背景

更多文章