英文:
operator = and := in struct in Golang
问题
为什么这段代码不起作用?使用 := 运算符可以正常工作,但为什么在这里不能使用 = 运算符?
package main
import "fmt"
type Vertex struct {
X, Y int
}
func main() {
v1 := Vertex{1, 2} // 类型为 Vertex
v2 := Vertex{X: 1} // Y:0 是隐式的
v3 := Vertex{} // X:0 和 Y:0
p := &Vertex{1, 2} // 类型为 *Vertex
fmt.Println(v1, p, v2, v3)
}
为什么这段代码不起作用?使用 := 运算符可以正常工作,但为什么在这里不能使用 = 运算符?
英文:
Why doesn't this work? It works with := operator but why can't we use = operator here?
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)
}
答案1
得分: 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) // 应该输出 {1, 2}
}
2:使用:=
运算符
package main
import "fmt"
type Vertex struct {
X, Y int
}
func main() {
f := Vertex{1, 2}
fmt.Println(f) // 应该输出 {1, 2}
}
英文:
You can create an instance of your new Vertex
type in a variety of ways:
1: var c Circle
You can access fields using the .
operator:
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: Using :=
operator
package main
import "fmt"
type Vertex struct {
X, Y int
}
func main() {
f := Vertex{1, 2}
fmt.Println(f) // should be {1, 2}
}
答案2
得分: 0
**:=**将同时初始化和声明变量。这是为了简化操作。
请不要混淆Go语言中的=和:=。
- **=**将值赋给先前定义的变量。
- 另一方面,**:=**同时声明和初始化变量。
此外,@Burdy给出了一个关于**=和:=**的简单示例。
希望这个答案能帮助你,解决你的疑惑和困惑。
英文:
:= will initialize and declares the variables at the same time. It is for simplicity.
Please don't get confuse in = and := in Go Language.
- = assigns values to previously defined variables.
- On the other hand, := declares and initialize variables at the same time.
Also, @Burdy gave a simple example of both = and :=.
Hope this answer helps you and clear your doubt/confusion.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论