首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
beego
V2EX  ›  Go

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

  •  
  •   lueffy · 102 天前 · 867 次点击
    这是一个创建于 102 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    求解!!

    11 回复  |  直到 2018-06-13 18:07:08 +08:00
        1
    ArieShout   102 天前 via iPhone
    可以为新定义的类型别名定义新的方法
        2
    prolic   102 天前
    最简单的应用,你可以 type xxx []int,然后定义 Swap Less Len 来做排序,把偶数放前面奇数放后面
        3
    6diyipi   102 天前   ♥ 1
    定义别名,就是为了让代码更可读;
    例如

    type Weekday int

    const (
    Sunday Weekday = iota
    Monday
    Tuesday
    Wednesday
    Thursday
    Friday
    Saturday
    )
        4
    hahasong   102 天前
    看什么视频,go 语言圣经的中文译本讲的很通俗,半天刷一遍就可以照着项目撸了
        5
    boboliu   102 天前
    请阅读文档。

    以及 type alias 的主要目的是自己重写或者加方法吧
        6
    pynix   102 天前
    可读性。
        7
    Y4ssss   102 天前
    1、为新定义的类型别名定义新的方法
    比如 type I int,你可以给 I 加一个新的方法,但是不能直接给 int 加方法

    2、可读性
        8
    LT   102 天前
    @Y4ssss 赞同
        9
    Greenm   102 天前
    没学过 go,但我猜是不是和 C 语言里的 typedef 类似?
        10
    gamexg   102 天前
    @Greenm #9 不太一样。
    go 里面声明出来的是新类型,不是别名。新类型有自己的方法,而且互相之间需要强制类型转换。

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

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

    go 语言圣经 2.5 章节

    例子很易懂. 建议还是看书学习.
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1678 人在线   最高记录 3762   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 17ms · UTC 12:02 · PVG 20:02 · LAX 05:02 · JFK 08:02
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1