Golang Go语言中 类型声明/类型别名 的作用何在?

最近在学习 go 语言,看了慕课网上的几个入门视频,讲的很浅显,但是都是说是什么怎么做,没有说为什么,所以有很多疑问 比如说 类型别名和类型声明

type D = int // 类型别名 type I int // 类型声明 类型别名和原类型完全一样,只不过是另一种叫法而已 类型别名和原类型是相同的,而类型定义和原类型是不同的两个类型。

我明白了这两个的意思和区别,但是 类型别名的作用何在?用在什么场景下? 既然和原类型一致,为什么不直接使用原类型??干嘛还要声明类型别名?

类型声明我就更不能理解了,两种类型用起来是一样的,但是却不能相互加减乘除,有啥用啊??

求解!!


Golang Go语言中 类型声明/类型别名 的作用何在?

更多关于Golang Go语言中 类型声明/类型别名 的作用何在?的实战教程也可以访问 https://www.itying.com/category-94-b0.html

12 回复

可以为新定义的类型别名定义新的方法

更多关于Golang Go语言中 类型声明/类型别名 的作用何在?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


最简单的应用,你可以 type xxx []int,然后定义 Swap Less Len 来做排序,把偶数放前面奇数放后面

定义别名,就是为了让代码更可读;
例如

type Weekday int

const (
Sunday Weekday = iota
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
)

看什么视频,go 语言圣经的中文译本讲的很通俗,半天刷一遍就可以照着项目撸了

请阅读文档。

以及 type alias 的主要目的是自己重写或者加方法吧

可读性。

1、为新定义的类型别名定义新的方法
比如 type I int,你可以给 I 加一个新的方法,但是不能直接给 int 加方法

2、可读性

没学过 go,但我猜是不是和 C 语言里的 typedef 类似?

#9 不太一样。
go 里面声明出来的是新类型,不是别名。新类型有自己的方法,而且互相之间需要强制类型转换。

不过新版本也出了个和 typedef 类似的,目的是为了解决包路径迁移后两个路径的结构被认为是两个独立的结构,互相之间需要强制转换的问题。

刚刚看完这里.

一个类型声明语句创建了一个新的类型名称,和现有类型具有相同的底层结构。新命名的类
型提供了一个方法,用来分隔不同概念的类型,这样即使它们底层类型相同也是不兼容的。
type 类型名字 底层类型

go 语言圣经 2.5 章节

例子很易懂. 建议还是看书学习.

在Golang(Go语言)中,类型声明和类型别名是两个重要的概念,它们在代码的可读性、可维护性和抽象层次上扮演着不同的角色。

类型声明(Type Declaration)主要用于定义新的类型,这些新类型与现有类型(如基础类型或结构体等)在底层实现上可能相同,但在类型检查上是不同的。这有助于防止类型混淆,提高代码的安全性和可读性。例如,通过type MyInt int,我们声明了一个新的类型MyInt,它基于基础类型int,但在Go的类型系统中,MyIntint被视为不同的类型,不能直接互换使用。

类型别名(Type Alias)是Go 1.9及以后版本引入的功能,它允许你为一个类型创建一个别名,而无需定义一个新的类型。类型别名主要用于简化复杂类型的书写,提高代码的可读性,同时保持与原始类型的兼容性。使用type AliasName = OriginalType语法可以创建类型别名。例如,type StringList = []string创建了一个StringList的别名,它实际上就是一个字符串切片。与类型声明不同,类型别名在类型检查上与原始类型是等价的,可以互换使用。

总之,类型声明和类型别名都是Go语言中用于类型管理的重要工具,它们在不同的场景下发挥着各自的作用,帮助开发者编写更加清晰、安全和可维护的代码。

回到顶部