Golang 结构中的运算符 = 和 :=
operator = and := in struct in Golang
为什么这行不通?它适用于 := 运算符,但为什么我们不能在这里使用 = 运算符?
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)
}
您可以通过多种方式创建新 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}
}
:= 会同时初始化和声明变量。这是为了简单。
请不要混淆 Go 语言中的 = 和 :=。
1. = 为之前定义的变量赋值。
2. 另一方面,:=同时声明和初始化变量。
此外,@Burdy 给出了 = 和 :=.
的简单示例
希望这个回答对您有所帮助,并清除您的doubt/confusion。
为什么这行不通?它适用于 := 运算符,但为什么我们不能在这里使用 = 运算符?
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)
}
您可以通过多种方式创建新 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}
}
:= 会同时初始化和声明变量。这是为了简单。 请不要混淆 Go 语言中的 = 和 :=。 1. = 为之前定义的变量赋值。 2. 另一方面,:=同时声明和初始化变量。
此外,@Burdy 给出了 = 和 :=.
的简单示例希望这个回答对您有所帮助,并清除您的doubt/confusion。