type myInt int32
与type myInt = int32
,概念并不相同
-
自定义类型:
type myInt int32
通过这种方式定义的类型是一个全新的类型 ,这个新类型与
int32
有相同的底层结构,但是却与int32
类型不兼容。gotype myInt int32
govar a int32 = 5 var b myInt = a // 这里会产生编译错误
尽管
myInt
的底层类型是int32
,但它们在类型系统中是不同的。 -
类型别名:
type myInt = int32
类型别名则是给现有类型起一个新的名字,新的名字与原始类型在类型系统中是完全相同的。
gotype myInt = int32
govar a int32 = 5 var b myInt = a // 这里不会产生编译错误
这里
myInt
是int32
的别名,所以不会产生任何编译错误。 -
总结
-
自定义类型会创建一个全新的类型,与原始类型在类型系统中是不兼容的。
-
类型别名则只是给现有类型起一个新名字,与原始类型在类型系统中完全相同。
-
自定义类型可用于封装或抽象,而类型别名则可以用来确保向后兼容或简化类型名称。
通过了解这些区别,可以更灵活地使用Go语言的类型系统来满足各种编程需求。
-