Go自动切换工作目录
简介
在 Go 程序执行的时候,有些配置是相对路径的,需要到指定的目录执行才能找到对应的配置文件。这时候就需要程序自动切换工作目录。
init 函数
在 golang 中在加载包的时候会先加载 init 函数,我们可以通过这个函数来实现
代码
package main
import (
"fmt"
"log"
"os"
"path/filepath"
)
// 自动切换工作目录
func init() {
pwd, _ := os.Getwd()
fmt.Println("开始工作目录", pwd)
// 程序所在目录
execDir, err := filepath.Abs(filepath.Dir(os.Args[0]))
if err != nil {
log.Fatal(err)
}
if pwd == execDir {
fmt.Println("不需要切换工作目录")
return
}
fmt.Println("切换工作目录到", execDir)
if err := os.Chdir(execDir); err != nil {
log.Fatal(err)
}
pwd, _ = os.Getwd()
fmt.Println("切换后工作目录:", pwd)
}
func main() {
}
总结
main 函数里面保留之前函数即可。也可以将这个 init 函数放到其他包里面去,然后导入到 main 包。
- 原文作者:Linux运维菜
- 原文链接:https://www.opcai.top/post/2020/2020-03/golang_auto_change_dir/
- 版权声明:本作品采用进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。