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

相关推荐
「、皓子~4 分钟前
AI创作系列(2):UniApp跨端开发实战 - 海狸IM移动端完全由AI编写
开发语言·人工智能·uni-app·开源·vue·开源软件·ai编程
南無忘码至尊17 分钟前
Unity C# 入门基础知识点整理与实战技巧
开发语言·c#
江梦寻18 分钟前
软件工程教学评价
开发语言·后端·macos·架构·github·软件工程
iCxhust19 分钟前
汇编字符串比较函数
c语言·开发语言·汇编·单片机·嵌入式硬件
美好的事情能不能发生在我身上32 分钟前
苍穹外卖Day11代码解析以及深入思考
java·spring boot·后端·spring·架构
不良手残1 小时前
Redisson + Lettuce 在 Spring Boot 中的最佳实践方案
java·spring boot·redis·后端
XMYX-01 小时前
Python 实现一个带进度条的 URL 批量下载工具(含 GUI 界面)
开发语言·python
一只小小汤圆2 小时前
如何xml序列化 和反序列化类中包含的类
xml·开发语言·c#
南枝异客2 小时前
电话号码的字母组合
开发语言·javascript·算法
一线大码2 小时前
SpringBoot 和 MySQL 的事务隔离级别关系
spring boot·后端·mysql