繁体   English   中英

如何在 golang 中正确使用 os.Args?

[英]How to correctly use os.Args in golang?

我需要在我的 go 代码中使用 config 并且我想从命令行加载配置路径。 我尝试:

if len(os.Args) > 1 { 
        configpath := os.Args[1]
        fmt.Println("1") // For debug
    } else {
        configpath := "/etc/buildozer/config"
        fmt.Println("2")
    }

然后我使用配置:

configuration := config.ConfigParser(configpath)

当我使用参数(或不使用)启动我的 go 文件时,我收到类似的错误

# command-line-arguments
src/2rl/buildozer/buildozer.go:21: undefined: configpath

我应该如何正确使用 os.Args?

if范围之外定义configPath

configPath := ""

if len(os.Args) > 1 { 
  configPath = os.Args[1] 
  fmt.Println("1") // For debugging purposes 
} else { 
  configPath = "/etc/buildozer/config"
  fmt.Println("2") 
}

注意“ configPath = ”(而不是:= )里面if

这样configPath在之前定义并且在if之后仍然可见。

在“声明和范围”/“变量声明”中查看更多信息。

对于另一种方法,您可以将逻辑包装在一个函数中:

package main
import "os"

func configPath(a []string) string {
   switch len(a) {
      case 1: return "/etc/buildozer/config"
      default: return os.Args[1]
   }
}

func main() {
   config := configPath(os.Args)
   println(config)
}

这避免了范围界定问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM