kubernetes 如何在Go应用程序中指定Windows文件路径?

vsnjm48y  于 2022-12-11  发布在  Kubernetes
关注(0)|答案(1)|浏览(224)

我试图为Go客户端应用程序的.kube/config文件指定Windows位置,但没有指定绝对路径。

kubeconfig := flag.String("kubeconfig", "%USERPROFILE%/.kube/config", "location to the Kube config file")

输出量:

panic: runtime error: invalid memory address or nil pointer dereference

当我在cmd中使用echo %USERPROFILE%时,输出是C:\Users\<username>,所以我认为这是因为\/在代码和路径中的不同用法。我试图使用\而不是/指定路径,但它给出了一个语法错误。
有没有人能给我一个建议,让我在Go语言中使用Windows环境变量来指定路径?

vh0rcniy

vh0rcniy1#

flag.String的输出本身并不扩展环境变量,但您可以使用os.ExpandEnv来扩展环境变量。但是os.ExpandEnv要求您使用Unix表示法来表示环境变量,即$USERPROFILE${USERPROFILE}。您可以使用filepath.Clean为我们的特定操作系统(在您的情况下为Windows)获取一个干净的文件路径。
示例:

kubeconfig := flag.String("kubeconfig", "$USERPROFILE/.kube/config", "location to the Kube config file")
fmt.Println(*kubeconfig)
fmt.Println(os.ExpandEnv(*kubeconfig))
fmt.Println(filepath.Clean(os.ExpandEnv(*kubeconfig)))

这将在Windows上输出以下内容:

$USERPROFILE/.kube/config
C:\Users\username/.kube/config
C:\Users\username\.kube\config

相关问题