函数外部的匿名结构不起作用

Anonymous structs outside function not working

我不明白为什么这对这种类型的结构不起作用。

package main

import (
        "fmt"
)

var myStruct struct {
        number float64
        word   string
        toggle bool
}

myStruct.number = 3.14
myStruct.word = "pie"
myStruct.toggle = true

func main() {
        //myStruct.number = 3.14
        //myStruct.word = "pie"
        //myStruct.toggle = true
        fmt.Println(myStruct.number)
        fmt.Println(myStruct.toggle)
        fmt.Println(myStruct.word)
}

如果我尝试在 main 外部更改 myStruct.number,我会收到编译错误 syntax error: non-declaration statement outside function body,但它在函数内部工作正常。对于变量或其他类型的数据结构,它可以很好地更改主范围之外的值,但不能使用结构。

该程序是 Head first Go 的示例,即使我至少搜索了三本书并 google 了解更多信息,我也没有找到类似的东西可以更好地解释。

https://play.golang.org/p/brocZzWuRae

package main

import (
    "fmt"
)

var myStruct = struct {
    number float64
    word   string
    toggle bool
}{
    number: 3.14,
    word:   "pie",
    toggle: true,
}

func main() {
    //myStruct.number = 3.14
    //myStruct.word = "pie"
    //myStruct.toggle = true
    fmt.Println(myStruct.number)
    fmt.Println(myStruct.toggle)
    fmt.Println(myStruct.word)
}