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

问题描述 投票:-2回答:2

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

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

然后继续使用它像go中的常规地图

mapper[13] = 133

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

go
2个回答
2
投票

这不是类型别名(正如OP最初询问的那样,在编辑问题之前)。 这是一个type definition或“定义类型”。

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

TypeDef = identifier Type .

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


类型别名是Go 1.9 changes的一部分。 这是proposed here并记录在Code refactoring

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


1
投票

当你想要重新声明将成为map[int]int的不同参数时,它会很有用。就在提供发布请求时,他们使用url.Values{},它实际上是一个map [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"])
}
© www.soinside.com 2019 - 2024. All rights reserved.