登录
首页 >  Golang >  Go问答

匿名结构在函数外部无效

来源:stackoverflow

时间:2024-03-05 22:57:24 264浏览 收藏

Golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《匿名结构在函数外部无效》带大家来了解一下##content_title##,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发!


问题内容

我不明白为什么这不适用于这种类型的结构。

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

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《匿名结构在函数外部无效》文章吧,也可关注golang学习网公众号了解相关技术文章。

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