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语言的类型系统来满足各种编程需求。

相关推荐
冰_河19 分钟前
QPS从300到3100:我靠一行代码让接口性能暴涨10倍,系统性能原地起飞!!
java·后端·性能优化
JavaGuide3 小时前
7 道 RAG 基础概念知识点/面试题总结
前端·后端
桦说编程3 小时前
从 ForkJoinPool 的 Compensate 看并发框架的线程补偿思想
java·后端·源码阅读
格砸4 小时前
从入门到辞职|从ChatGPT到OpenClaw,跟上智能时代的进化
前端·人工智能·后端
蝎子莱莱爱打怪5 小时前
GitLab CI/CD + Docker Registry + K8s 部署完整实战指南
后端·docker·kubernetes
哈密瓜的眉毛美5 小时前
零基础学Java|第三篇:DOS 命令、转义字符、注释与代码规范
后端
用户60572374873085 小时前
AI 编码助手的规范驱动开发 - OpenSpec 初探
前端·后端·程序员
哈密瓜的眉毛美5 小时前
零基础学Java|第二篇:Java 核心机制与第一个程序:从 JVM 到 Hello World
后端
用户8307196840826 小时前
RabbitMQ vs RocketMQ 事务大对决:一个在“裸奔”,一个在“开挂”?
后端·rabbitmq·rocketmq