operator = and := in struct in Golang

huangapple go评论141阅读模式
英文:

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语言中的=和:=。

  1. **=**将值赋给先前定义的变量。
  2. 另一方面,**:=**同时声明和初始化变量。

此外,@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.

  1. = assigns values to previously defined variables.
  2. 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.

huangapple
  • 本文由 发表于 2017年7月22日 17:02:11
  • 转载请务必保留本文链接:https://go.coder-hub.com/45252693.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定