在go中,如何制作全局变量

package main 


import (

    "fmt"

    "bufio"

    "os"

)


func main() {

    fmt.Print("LOADED!\n")

    fmt.Print("insert y value here: ")

    inputY := bufio.NewScanner(os.Stdin)

    inputY.Scan()

    inputXfunc()

}


func inputXfunc() {

    fmt.Print("insert x value here: ")

    inputX := bufio.NewScanner(os.Stdin)

    inputX.Scan()

    slope()

}


func slope() {

    fmt.Println(inputX.Text())

}

每当我运行这个程序时,它都会说 inputX 和 inputY 是未识别的。我如何让这个程序使用所有函数都可以访问的变量?我想要做的就是通过 inputX 划分 inputY 然后打印出结果


12345678_0001
浏览 164回答 2
2回答

明月笑刀无情

我只是把我的评论作为答案......我建议反对这个,但是你可以在包范围内声明变量。它看起来像这样;package main import (    "fmt"    "bufio"    "os")var inputX io.Scannerfunc main() {    fmt.Print("LOADED!\n")    fmt.Print("insert y value here: ")    inputY := bufio.NewScanner(os.Stdin)    inputY.Scan()    inputXfunc()}func inputXfunc() {    fmt.Print("insert x value here: ")    inputX = bufio.NewScanner(os.Stdin) // get rid of assignment initilize short hand here    inputX.Scan()    slope()}func slope() {    fmt.Println(inputX.Text())}然而,更好的选择是更改您的方法定义以接受参数并根据需要将值传递给它们。这个要这样;func slope(inputX bufio.Scanner) {        fmt.Println(inputX.Text())    } slope(myInputWhichIsOfTypeIOScanner)

慕沐林林

您可以创建一个init()函数并在 中使用它,方法是main.go使用 package likegodotenv来设置 os 的环境变量:global.go 文件package globalimport (    "log"    "os"    "strconv"    "github.com/joho/godotenv")var (    SERVER_HOST        string    SERVER_PORT        int)func InitConfig() {    err := godotenv.Load()    if err != nil {        log.Fatal("Error loading .env file")    }    SERVER_HOST = os.Getenv("SERVER_HOST")    SERVER_PORT, _ = strconv.Atoi(os.Getenv("SERVER_PORT"))}main.go 文件package mainimport(    G "path/to/config")func init() {    G.InitConfig()}func main() {    G.Init()}您仍然需要在其他包中导入“G”包才能使用这些变量,但我认为在 Go(或任何其他语言)中处理全局变量的最佳方法是使用环境变量。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go