Go 中自定义类型与基础类型间的显式类型转换详解

张开发
2026/4/10 15:59:53 15 分钟阅读

分享文章

Go 中自定义类型与基础类型间的显式类型转换详解
在 Go 语言中使用 type 关键字定义的新类型如 type INTEGER int与底层基础类型如 int虽具有相同底层结构但属于完全不同的类型彼此不可隐式赋值必须通过显式类型转换完成交互。 在 go 语言中使用 type 关键字定义的新类型如 type integer int与底层基础类型如 int虽具有相同底层结构但属于**完全不同的类型**彼此不可隐式赋值必须通过显式类型转换完成交互。Go 的类型系统强调类型安全与显式意图。即使两个类型共享相同的底层表示例如 int 和 type INTEGER intGo 仍将它们视为不兼容的独立类型——这是有意为之的设计旨在防止因类型混用引发的逻辑错误或维护隐患。在您的示例中type INTEGER intfunc F(a int, b int) (sum int, difference int) { /* ... */ }函数 F 返回的是两个 int 类型值而变量 aa、bb 的类型是 INTEGER。尽管二者底层均为 int但 Go 不允许在多变量赋值语句中如 aa, bb F(100,50)自动将 int 赋给 INTEGER因此编译器报错cannot assign int to aa (type INTEGER) in multiple assignment? 正确做法是先获取返回值再对每个值进行显式类型转换 唱鸭 音乐创作全流程的AI自动作曲工具集 AI 辅助作词、AI 自动作曲、编曲、混音于一体

更多文章