最近在学习 go 语言,看了慕课网上的几个入门视频,讲的很浅显,但是都是说是什么怎么做,没有说为什么,所以有很多疑问 比如说 类型别名和类型声明
type D = int // 类型别名 type I int // 类型声明 类型别名和原类型完全一样,只不过是另一种叫法而已 类型别名和原类型是相同的,而类型定义和原类型是不同的两个类型。
我明白了这两个的意思和区别,但是 类型别名的作用何在?用在什么场景下? 既然和原类型一致,为什么不直接使用原类型??干嘛还要声明类型别名?
类型声明我就更不能理解了,两种类型用起来是一样的,但是却不能相互加减乘除,有啥用啊??
求解!!
1
ArieShout 2018-06-13 15:07:32 +08:00 via iPhone
可以为新定义的类型别名定义新的方法
|
2
prolic 2018-06-13 15:13:36 +08:00
最简单的应用,你可以 type xxx []int,然后定义 Swap Less Len 来做排序,把偶数放前面奇数放后面
|
3
6diyipi 2018-06-13 15:16:15 +08:00 1
定义别名,就是为了让代码更可读;
例如 type Weekday int const ( Sunday Weekday = iota Monday Tuesday Wednesday Thursday Friday Saturday ) |
4
hahasong 2018-06-13 15:18:01 +08:00
看什么视频,go 语言圣经的中文译本讲的很通俗,半天刷一遍就可以照着项目撸了
|
5
boboliu 2018-06-13 15:43:27 +08:00
请阅读文档。
以及 type alias 的主要目的是自己重写或者加方法吧 |
6
pynix 2018-06-13 15:53:39 +08:00
可读性。
|
7
Y4ssss 2018-06-13 16:12:18 +08:00
1、为新定义的类型别名定义新的方法
比如 type I int,你可以给 I 加一个新的方法,但是不能直接给 int 加方法 2、可读性 |
9
Greenm 2018-06-13 17:45:33 +08:00
没学过 go,但我猜是不是和 C 语言里的 typedef 类似?
|
10
gamexg 2018-06-13 18:00:34 +08:00
@Greenm #9 不太一样。
go 里面声明出来的是新类型,不是别名。新类型有自己的方法,而且互相之间需要强制类型转换。 不过新版本也出了个和 typedef 类似的,目的是为了解决包路径迁移后两个路径的结构被认为是两个独立的结构,互相之间需要强制转换的问题。 |
11
bluefalconjun 2018-06-13 18:07:08 +08:00
刚刚看完这里.
一个类型声明语句创建了一个新的类型名称,和现有类型具有相同的底层结构。新命名的类 型提供了一个方法,用来分隔不同概念的类型,这样即使它们底层类型相同也是不兼容的。 type 类型名字 底层类型 go 语言圣经 2.5 章节 例子很易懂. 建议还是看书学习. |