type关键字在执行什么操作(准确)?

时间:2018-12-09 06:31:09

标签: go struct types keyword

我一直在阅读A Tour of Go以学习Go-Lang,到目前为止一切都很好。

我目前在Struct Fields课程中,这是右侧的示例代码:

package main

import "fmt"

type Vertex struct {
  X int
  Y int
}

func main() {
  v := Vertex{1, 2}
  v.X = 4
  fmt.Println(v.X)
}

看看第3行:

type Vertex struct {

我不明白这一点,type关键字有什么作用,为什么存在?

2 个答案:

答案 0 :(得分:6)

可以使用type关键字来创建新类型。这称为type definition。新类型(在您的情况下为Vertex)将具有与基础类型相同的结构(具有X和Y的结构)。那行基本上是说“基于X int和Y int的结构创建一个称为Vertex的类型”。

不要将类型定义与类型别名混淆。当您声明一个新类型时,您不仅在给它一个新名称-它还将被视为一个独特的类型。请查看type identity,以获取有关该主题的更多信息。

答案 1 :(得分:2)

用于定义新类型。

常规格式:
  type <new_type> <existing_type or type_definition>

常见用例:

  • 为现有类型创建新类型。
    格式:
    type <new_type> <existing_type>
    例如
    type Seq []int
  • 在定义结构时创建类型。
    格式:
    type <new_type> struct { /*...*/}
    例如
    https://gobyexample.com/structs
  • 定义函数类型(也就是通过将名称分配给函数签名)
    格式:
    type <FuncName> func(<param_type_list>) <return_type>
    例如
    type AdderFunc func(int, int) int

您的情况:

它为新结构定义了一个名为Vertex的类型,以便以后您可以通过Vertex引用该结构。