猿问

Go变量初始化语法

我注意到在 Go 代码示例中有两种初始化结构类型变量的方式,但我不明白何时使用每种方式。


款式一:


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)

}

样式 2:


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)

}

第一种风格是简单的变量初始化,但第二种风格对我来说更晦涩。花括号有什么作用?为什么要使用第二种形式?


qq_笑_17
浏览 94回答 2
2回答

陪伴而非守候

花括号有什么作用?它们表示一个代码块。当您想要限制标识符的范围(到该块)时,您可以使用代码块。实际上,它在这里没有任何意义,因为您只有一个标识符,而且它来自外部范围。

慕婉清6462132

我看不出这两种风格之间的区别。他们完全一样。{}this 定义了范围代码,其中声明的一些变量只能在该范围内使用。但是如果你helloMsg在外面声明并在块=内做{}。'helloMsg' 尚未确定范围。所以,这两种格式化风格是完全一样的。
随时随地看视频慕课网APP

相关分类

Go
我要回答