Golang自定义类型与类型别名

type myInt int32 与 type myInt = int32,概念并不相同

  1. 自定义类型:type myInt int32

    通过这种方式定义的类型是一个全新的类型 ,这个新类型与int32有相同的底层结构,但是却与int32类型不兼容。

    go 复制代码
    type myInt int32
    go 复制代码
    var a int32 = 5
    var b myInt = a  // 这里会产生编译错误

    尽管myInt的底层类型是int32,但它们在类型系统中是不同的。

  2. 类型别名:type myInt = int32

    类型别名则是给现有类型起一个新的名字,新的名字与原始类型在类型系统中是完全相同的。

    go 复制代码
    type myInt = int32
    go 复制代码
    var a int32 = 5
    var b myInt = a  // 这里不会产生编译错误

    这里myInt是int32的别名,所以不会产生任何编译错误。

  3. 总结

    • 自定义类型会创建一个全新的类型,与原始类型在类型系统中是不兼容的。

    • 类型别名则只是给现有类型起一个新名字,与原始类型在类型系统中完全相同。

    • 自定义类型可用于封装或抽象,而类型别名则可以用来确保向后兼容或简化类型名称。

    通过了解这些区别,可以更灵活地使用Go语言的类型系统来满足各种编程需求。

相关推荐
chenbingjie_c6 小时前
C++ 进阶核心知识点总结:模板、内存分区、new/delete、内存池
开发语言·c++
噢,我明白了7 小时前
java中唯一键和幂等键的应用
java·后端
GreenTea7 小时前
我把 Agent 的 while 循环拆掉了:一种你可能没想到的 Agent 架构
前端·后端·架构
考虑考虑7 小时前
synchronized字符串常量
java·后端·java ee
Escalating_xu8 小时前
【C 语言】深入理解指针(1·下):指针运算、野指针、assert 与传址实战
java·c语言·开发语言
实心儿儿8 小时前
Qt — Qt 事件
开发语言·qt
周杰偷奶茶8 小时前
【Java】数据类型与变量
java·开发语言
code斗8 小时前
Java数据结构:堆详解
java·开发语言·数据结构
颜进强8 小时前
16 · NestJS LifecycleEvents 生命周期事件:五个钩子、三条边界,和 rag-server 的优雅停机
前端·后端·ai编程
重生之小比特8 小时前
【C++进阶】map和set
java·开发语言·c++