登录
首页 >  Golang >  Go问答

大括号在赋值语句中的作用是什么?

来源:stackoverflow

时间:2024-02-26 23:45:25 373浏览 收藏

学习Golang要努力,但是不要急!今天的这篇文章《大括号在赋值语句中的作用是什么?》将会介绍到等等知识点,如果你想深入学习Golang,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!

问题内容

在go中,当为数组分配多个值时,使用大括号{....}。这个牙套是什么?它是匿名结构吗?

package main

import "fmt"

func main() {
    var string_array [4]string = [4]string {"x", "y", "z", "w"}
    var int_array [5]int = [5]int {1,2,3}

    fmt.println(string_array)
    fmt.println(int_array)
}

{"x", "y", "z", "w"} 与下面相同并且 go 运行时正在进行隐式转换?

type anonymous struct {
        _0 string
        _1 string
        _2 string
        _3 string
    }
    var anon anonymous = anonymous{"X", "Y", "Z", "W"}

如果是数组,为什么不使用 ["x", "y", "z", "w"]

  • 从数组或切片进行多重赋值
  • go 数组初始化

golang 规范中哪里对此语法进行了解释?


解决方案


它记录在 the Go language specification 的“Composite literals”下(强调我的):

复合文字为结构体、数组、切片和映射构造值,并在每次求值时创建一个新值。它们由文字类型后跟大括号元素列表组成。每个元素前面可以有一个相应的键(可选)。

其中“大括号绑定”是指根据您发布的代码用 {} 分隔的值。

来自语法规范:

CompositeLit  = LiteralType LiteralValue .
LiteralType   = StructType | ArrayType | "[" "..." "]" ElementType |
                SliceType | MapType | TypeName .
LiteralValue  = "{" [ ElementList [ "," ] ] "}" .        <-- This production-rule, right here
ElementList   = KeyedElement { "," KeyedElement } .
KeyedElement  = [ Key ":" ] Element .
Key           = FieldName | Expression | LiteralValue .
FieldName     = identifier .
Element       = Expression | LiteralValue .

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>