首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Go变量初始化语法

Go变量初始化语法
EN

Stack Overflow用户
提问于 2019-01-31 11:45:24
回答 2查看 93关注 0票数 2

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

风格1:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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)
}

第一种风格是一个简单的变量初始化,但第二种方式对我来说更加模糊。花括号是干什么用的?我为什么要用第二种形式?

编辑:

有关这个问题的更多上下文,请参阅Go Kit库的示例代码:https://github.com/go-kit/kit/blob/master/examples/profilesvc/cmd/profilesvc/main.go

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-31 11:51:42

花括号是干什么用的?

它们表示一个代码块。如果要限制标识符的作用域(仅限于该代码块),则使用代码块。在这里,这是没有意义的,因为您只有一个标识符,而且它来自外部范围。

有些人读到:

票数 3
EN

Stack Overflow用户

发布于 2019-02-01 02:07:33

我看不出这两种风格有什么区别。他们完全一样。

{} --它定义了作用域代码,并且在其中声明的一些变量只能在该作用域内使用。但是,如果您在外部声明helloMsg,并在{}块中执行=。“helloMsg”还没有确定范围。

因此,这两种格式的样式完全相同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54459877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档