首页 >后端开发 >Golang >为什么我不能给 Go 中函数外部的变量赋值?

为什么我不能给 Go 中函数外部的变量赋值?

Patricia Arquette
Patricia Arquette原创
2024-11-17 07:12:03628浏览

Why Can't I Assign a Value to a Variable Outside of a Function in Go?

Go 中函数体外部的非声明语句

在 Go 中,不可能使用非声明在函数外部声明变量陈述。当尝试为未声明的变量赋值时会发生此错误,如下例所示:

test := "This is a test."

func main() {
    fmt.Println(test)
    test = "Another value"
    fmt.Println(test)
}

解决方案

要声明全局- Go 中可访问变量,请在 main 函数之外使用 var 关键字。变量的名称应以小写字母开头,以使其成为包私有的(只能在其包内访问)。

var test = "This is a test"

此方法允许您在函数外部声明变量并在函数内更改其值在同一个包中。

其他信息

  • :=短声明语法只允许在函数体中使用。
  • 用 var 声明的变量可以是任何类型,包括映射和结构等非原始类型。
  • Go 还提供了 init 函数,该函数在 main 函数之前调用,可用于包初始化。

示例代码

以下是如何使用包私有变量并更改其值的示例:

package apitest

import (
    "fmt"
)

var sessionID string

func main() {
    fmt.Println(sessionID)
    updateSessionID()
    fmt.Println(sessionID)
}

func updateSessionID() {
    sessionID = "NEW_SESSION_ID"
}

在此示例中,可以从 apitest 中的任何位置访问 sessionID 变量包裹。它在主函数中初始化为空字符串,并在 updateSessionID 函数中更新。

以上是为什么我不能给 Go 中函数外部的变量赋值?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn