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:
type <new_type> <existing_type>
type Seq []int
type <new_type> struct { /*...*/}
type <FuncName> func(<param_type_list>) <return_type>
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
.