-3

为什么这不起作用?它适用于 := 运算符,但为什么我们不能在这里使用 = 运算符?

package main

import "fmt"

type Vertex struct {
    X, Y int
}


func main() {
v1 = Vertex{1, 2}  // has type Vertex
v2 = Vertex{X: 1}  // Y:0 is implicit

v3 = Vertex{}      // X:0 and Y:0
p  = &Vertex{1, 2} // has type *Vertex
fmt.Println(v1, p, v2, v3)
}
4

2 回答 2

2

您可以通过Vertex多种方式创建新类型的实例:

1:var c Circle 您可以使用运算符访问字段.

package main

import "fmt"

type Vertex struct {
    X, Y int
}
func main() {
    var f Vertex
    f.X = 1
    f.Y = 2
    fmt.Println(f) // should be {1, 2}
}

2:使用:=运算符

package main

import "fmt"

type Vertex struct {
    X, Y int
}
func main() {
    f := Vertex{1, 2}
    fmt.Println(f) // should be {1, 2}
}
于 2017-07-22T09:36:37.630 回答
0

:=将同时初始化和声明变量。这是为了简单。请不要混淆 Go 语言中的 = 和 :=。1. =为先前定义的变量赋值。2. 另一方面,:=同时声明和初始化变量。

此外,@Burdy 给出了=:=的简单示例。

希望这个答案可以帮助您并消除您的疑问/困惑。

于 2017-07-22T13:12:00.920 回答