functiongostructcompilationanonymous

Anonymous structs outside function not working


I don't understand why this doesn't work for this type of structure.

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)
}

If I try to change myStruct.number outside main, I get a compilation error syntax error: non-declaration statement outside function body, but it works fine inside the function. With variables or other types of data structures, it works fine to change values outside main scope, but not with struct.

The program is an example from Head first Go, and even if I searched at least three more books and google for more information, I haven't found something similar that would be better explained.


Solution

  • 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)
    }