Golang自定义类型与类型别名

type myInt int32type 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  // 这里不会产生编译错误

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

  3. 总结

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

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

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

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

相关推荐
geovindu5 分钟前
go: Model,Interface,DAL ,Factory,BLL using mysql
开发语言·mysql·设计模式·golang·软件构建
未秃头的程序猿6 分钟前
💥 MyBatis 面试连环炮:从源码原理到实战避坑,彻底拿下 Offer 通关秘籍
后端·面试·mybatis
Java编程爱好者6 分钟前
深入浅出 Java volatile:从硬件到 JMM 的完整剖析
后端
XiYang-DING8 分钟前
【Java】反射
java·开发语言
程序员cxuan8 分钟前
36 张图彻底解释清楚 AI 圈 136 个造词艺术!!!
人工智能·后端·github copilot
意法半导体STM3210 分钟前
【官方原创】STM32 USBx Host HID standardalone移植示例 LAT1449
开发语言·前端·stm32·单片机·嵌入式硬件
若阳安好13 分钟前
【java】任务流批处理平台
java·开发语言
我还不赖19 分钟前
「概念激活」提示词工程的技术原理:为什么一个名字比一万字描述更有效
后端
神奇小汤圆23 分钟前
Java 的金额计算用 long 还是 BigDecimal?资深程序员这样选
后端