如何在Golang中区分类型别名与类型定义

  介绍

这篇文章将为大家详细讲解有关如何在Golang中区分类型别名与类型定义,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

Golang适合做什么

Golang可以做服务器端开发,但Golang很适合做日志处理,数据打包,虚拟机处理,数据库代理等工作。在网络编程方面,它还广泛应用于网络应用,API应用等领域。

一、类型别名(别名),类型定义是什么?

类型别名是走1.9版本添加的新功能。主要应用于代码升级,工程重构,迁移中类型的兼容性问题C/c++语言中,代码的重构升级可以使用宏快速定义新的代码.Go语言中并未选择通过宏,而是选择通过类型别名解决重构中最复杂的类型名变更问题。

1.9版在去本之前内建类型定义的代码如下:

type  byte  uint8   type  rune  int32

1.9版在去本之后内建类型定义的代码如下:

type  byte =uint8   type  rune =, int32

通过以上可以看出这个修改就是配合类型别名进行修改的。

二、区分类型别名与类型定义

类型别名规定:类型别名只是类型的别名,本质上类型别名与类型是同一个类型,即基本数据类型是一致的。好比如我们小时家里人给我们起的小名,上学后英语老师给起的英文名字,但是这个名字都是指的我们自己。
表面上看类型别名与类型定义只有一个等号的差异(“=?,实际上的差异我们通过一段简短的代码更为深刻的理解二者之间的差异,如下代码所示,

package 主要      import “fmt"//,自定义类型敏,基本类型是int   type  myInt  int//将,int 类型取一个别名intAlias   type  intAlias =int      func  main (), {   ,//声明,一个变量为自定义,myInt 类型   var  a 敏   ,//输出,a 的类型,和默认值   ,fmt.Printf (“a 类型:% T,值:,% d \ n",,,,)      ,//声明,b变量为,intAlias 类型   var  b  intAlias   ,//输出,b 的类型,和默认值   ,fmt.Printf (“b 类型:% T,值:,% d \ n",, b, b)   }

==输出结果==:
类型:主要。敏,值:0
b类型:int,值:0

<李>

从上面的结果我们可以看的出,一个的类型是主要的。敏,表示主要包下定义的敏类型。生成了新的数据类型。

<李>

b的类型是int .intAlias类型只会在代码中存在,编译完成时,不会有intAlias类型。

类型定义

类型定义:依据基本类型声明一个新的数据类型。

,//,新声明一个变量c  intAlias 类型   var  c  intAlias   c =,   ,fmt.Printf (“c 类型:% T,值:,% d \ n",, c, c)   ,   OutPut 结果:   ,cannot  use  a  (type 敏),as  type  int 拷贝赋值

从以上可以看的出,变量和c不是同一个类型,因此不能直接赋值,可以通过强制类型转换,实现修改为c=int (a)。

关于如何在Golang中区分类型别名与类型定义就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

如何在Golang中区分类型别名与类型定义