类型定义的目的是什么?什么时候有用?

时间:2018-03-03 22:13:49

标签: go

在golang中,您可以将类型定义为数据结构

type MyMap map[int]int
mapper := make(MyMap)

继续像go中的常规地图一样使用它

mapper[13] = 133

但是我不明白何时使用它或在什么情况下这会有用?

2 个答案:

答案 0 :(得分:2)

这不是类型别名(在编辑问题之前,OP最初提出的问题) 这是type definition或“已定义类型”。

  

类型定义创建一个新的,不同的类型,它具有与给定类型相同的基础类型和操作,并将标识符绑定到它。

TypeDef = identifier Type .

这允许您在该类型上附加您无法使用原始类型的方法。

输入别名Go 1.9 changes的一部分 它是proposed here并记录在Code refactoring

  

Go应该添加为类型创建备用等效名称的功能,以便在代码库重构期间启用渐进式代码修复。

答案 1 :(得分:1)

当您想要重新声明将成为map[int]int的不同参数时,它会很有用。就在提供帖子请求时,他们使用url.Values{},这实际上是一个map [string] [] string。

package main

import (
    "fmt"
    "net/url"
)

func main() {
    v := url.Values{}
    v.Set("name", "Ava")
    v.Add("friend", "Jess")
    v.Add("friend", "Sarah")
    v.Add("friend", "Zoe")
    // v.Encode() == "name=Ava&friend=Jess&friend=Sarah&friend=Zoe"
    fmt.Println(v.Get("name"))
    fmt.Println(v.Get("friend"))
    fmt.Println(v["friend"])
}