03.05 Go自动切换工作目录

简介


Go自动切换工作目录

在 Go 程序执行的时候,有些配置是相对路径的,需要到指定的目录执行才能找到对应的配置文件。这时候就需要程序自动切换工作目录。

init 函数

在 golang 中在加载包的时候会先加载 init 函数,我们可以通过这个函数来实现。


Go自动切换工作目录


代码

<code>package main

import (
\t"fmt"
\t"log"
\t"os"
\t"path/filepath"
)

// 自动切换工作目录
func init() {
\tpwd, _ := os.Getwd()
\tfmt.Println("开始工作目录", pwd)
\t// 程序所在目录
\texecDir, err := filepath.Abs(filepath.Dir(os.Args[0]))
\tif err != nil {
\t\tlog.Fatal(err)
\t}
\tif pwd == execDir {
\t\tfmt.Println("不需要切换工作目录")
\t\treturn
\t}
\tfmt.Println("切换工作目录到", execDir)
\tif err := os.Chdir(execDir); err != nil {
\t\tlog.Fatal(err)
\t}
\tpwd, _ = os.Getwd()
\tfmt.Println("切换后工作目录:", pwd)
}

func main() {
}
/<code>

总结

main 函数里面保留之前函数即可。也可以将这个 init 函数放到其他包里面去,然后导入到 main 包。


Go自动切换工作目录


分享到:


相關文章: