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

I've been reading A Tour of Go to learn Go-Lang and so far it's going good.

I'm currently on the Struct Fields Lesson and here is the sample code from the right hand side:

package main

import "fmt"

type Vertex struct {
  X int
  Y int
}

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

Take a look at line 3:

type Vertex struct {

What I don't understand this, what does the type keyword do and why is it there?

The type keyword is there to create a new type. This is called type definition. The new type (in your case, Vertex) will have the same structure as the underlying type (the struct with X and Y). That line is basically saying "create a type called Vertex based on a struct of X int and Y int".

Don't confuse type definition with type aliasing. When you declare a new type, you are not just giving it a new name - it will be considered a distinct type. Take a look at type identity for more information on the subject.

It's used to define a new type.

General format:
type <new_type> <existing_type or type_definition>

Common use cases:

  • Create a new type for an existing type.
    Format:
    type <new_type> <existing_type>
    e.g
    type Seq []int
  • Create a type while defining struct.
    Format:
    type <new_type> struct { /*...*/}
    e.g
    https://gobyexample.com/structs
  • Define function type, (aka. by assigning name to a function signature).
    Format:
    type <FuncName> func(<param_type_list>) <return_type>
    e.g
    type AdderFunc func(int, int) int

In your case:

It define a type named Vertex for a new struct, so that later you can refer to the struct via Vertex.