去变量动初始化语法

问题描述 投票:2回答:2

我注意到两种风格初始化在Go代码示例结构类型的变量,但我不明白何时使用它们。

风格1:

package main

import (
    "fmt"
)

type Msg struct {
  value string
}

func NewMsg(value string) (Msg) {
  return Msg{value}
}

func main() {
  fmt.Println("Hello, playground")

  var helloMsg Msg
  helloMsg = NewMsg("oi")

  fmt.Println("Hello, ", helloMsg.value)
}

款式二:

package main

import (
    "fmt"
)

type Msg struct {
  value string
}

func NewMsg(value string) (Msg) {
  return Msg{value}
}

func main() {
  fmt.Println("Hello, playground")

  var helloMsg Msg
  {
     helloMsg = NewMsg("oi")
  }

  fmt.Println("Hello, ", helloMsg.value)
}

第一个样式是simples变量初始化,但第二个是比较模糊的我。什么花括号呢?我为什么要使用第二种形式?

编辑:

有关问题更多的上下文,它从转到套件库此示例代码出现了:qazxsw POI

go
2个回答
3
投票

什么花括号呢?

他们表示一个代码块。当你希望限制一个标识符(该块)的范围内可以使用的代码块。这是没有意义的,确实,因为你只能有一个标识,它从外部范围的。

一些阅读:


0
投票

我看不出这两种风格之间的差异。他们是完全一样的。

Blocks in Go此定义范围代码,和在其内部声明的一些变量可以只在该范围内使用。但是,如果你外面声明{}helloMsg=块内。 “helloMsg”没有范围的。

因此,这两种格式的风格是完全一样的。

© www.soinside.com 2019 - 2024. All rights reserved.