type关键字在go中(确切地)做了什么?

type关键字在go中(确切地)做了什么?,go,struct,types,keyword,Go,Struct,Types,Keyword,我一直在读书学习,到目前为止一切都很顺利 我目前正在学习本课程,下面是右侧的示例代码: 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 { 我不明白的是,类型关键字做了什么?为什么会有它?类型关键字是用来创建新类型的。这就是所

我一直在读书学习,到目前为止一切都很顺利

我目前正在学习本课程,下面是右侧的示例代码:

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 {

我不明白的是,
类型
关键字做了什么?为什么会有它?

类型关键字是用来创建新类型的。这就是所谓的。新类型(在本例中为Vertex)将具有与基础类型(具有X和Y的结构)相同的结构。这句话的基本意思是“基于X int和Y int的结构创建一个称为Vertex的类型”


不要混淆类型定义和类型别名。当您声明一个新类型时,您不仅仅是给它起了一个新名称——它将被视为一个不同的类型。查看以获取有关该主题的更多信息。

它用于定义新类型

一般格式:
类型

常见用例:

  • 为现有类型创建新类型。
    格式:
    类型

    e、 g
    类型Seq[]int
  • 定义结构时创建类型。
    格式:
    类型结构{/*…*/}

    e、 g
  • 定义函数类型(也就是通过为函数签名指定名称)。
    格式:
    键入func()

    e、 g
    键入AdderFunc func(int,int)int
在您的情况下:


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

引用该结构,另外,如果您有一个带有
B
方法的类型
a
。如果您将另一个类型
C
定义为
C类型A
,您将无法在类型
C
上调用方法
B
。即
varc;c、 B()
不会编译。看见