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

相关推荐
间彧几秒前
CopyOnWriteArrayList详解与SpringBoot项目实战
后端
小妖6664 分钟前
vscode 怎么运行 c++ 文件
开发语言·c++
间彧5 分钟前
SpringBoot @FunctionalInterface注解与项目实战
后端
weixin_307779136 分钟前
在 Microsoft Azure 上部署 ClickHouse 数据仓库:托管服务与自行部署的全面指南
开发语言·数据库·数据仓库·云计算·azure
鱼鱼说测试8 分钟前
Linux下运行Jmeter
开发语言·python
程序员小凯13 分钟前
Spring Boot性能优化详解
spring boot·后端·性能优化
鱼鱼说测试17 分钟前
postman功能接口测试
开发语言·lua
Achou.Wang18 分钟前
源码分析 golang bigcache 高性能无 GC 开销的缓存设计实现
开发语言·缓存·golang
Asthenia041222 分钟前
问题复盘:飞书OAuth登录跨域Cookie方案探索与实践
后端
tuine28 分钟前
SpringBoot使用LocalDate接收参数解析问题
java·spring boot·后端