2 回答
TA贡献1828条经验 获得超4个赞
我只是把我的评论作为答案......我建议反对这个,但是你可以在包范围内声明变量。它看起来像这样;
package main
import (
"fmt"
"bufio"
"os"
)
var inputX io.Scanner
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) // 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)
TA贡献2016条经验 获得超9个赞
您可以创建一个init()函数并在 中使用它,方法是main.go使用 package likegodotenv来设置 os 的环境变量:
global.go 文件
package global
import (
"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 main
import(
G "path/to/config"
)
func init() {
G.InitConfig()
}
func main() {
G.Init()
}
您仍然需要在其他包中导入“G”包才能使用这些变量,但我认为在 Go(或任何其他语言)中处理全局变量的最佳方法是使用环境变量。
- 2 回答
- 0 关注
- 163 浏览
添加回答
举报