天パのtech備忘録

プログラミング関係の記事を書いていきます!

Go Path Linux<->Windows

Goを初めてばかりでlinuxのファイル操作アプリを作成したときにwindowsで試した時はエラーが出たのでlinuxwindowsで自由にパス変換ができればいいなと思い、関数を作成してみました。

func ToValidPath(path string) (string, error) {
    fullPath, err := filepath.Abs(path)
    if err != nil {
        return "", err
    }
    list := strings.Split(fullPath, "/")
    if runtime.GOOS == "windows" {
        validPath := filepath.Join(list...)
        return validPath, nil
    } else {
        validPath := "/" + filepath.Join(list...)
        return validPath, nil
    }
}

引数で絶対パス相対パスを入れることで使用OSに対応した絶対パスを返します。