チルダをホーム ディレクトリに展開する
相対パスを処理できるようにコードを拡張するには、多くの場合、チルダ文字 '~' を実際のホーム ディレクトリに展開する必要があります。これを実現するために、Go の標準ライブラリを使用したクロスプラットフォーム ソリューションを検討します。
path/filepath パッケージには、ファイル パスを操作するための便利な関数が用意されていますが、チルダ展開の機能がありません。ただし、Go の os/user パッケージでは、ホーム ディレクトリを含むユーザー情報へのアクセスが許可されています。
これらのパッケージを組み合わせることで、'~' のプレフィックスが付いたパスを解決する関数を開発できます:
import ( "os/user" "path/filepath" "strings" ) func expandTilde(path string) string { if path == "~" { // Resolve "~" directly to the home directory usr, _ := user.Current() return usr.HomeDir } else if strings.HasPrefix(path, "~/") { // Expand paths starting with "~/" usr, _ := user.Current() return filepath.Join(usr.HomeDir, path[2:]) } // Otherwise, leave the path untouched return path }
expandPath 関数に、次のチルダ拡張機能を組み込むことができます。
func expandPath() { if path.IsAbs(*destination) { return } cwd, err := os.Getwd() checkError(err) *destination = path.Join(cwd, expandTilde(*destination)) }
このソリューションは、チルダ文字「~」を含むパスを各ユーザーのホーム ディレクトリに展開するクロスプラットフォーム アプローチ。
以上がGo でチルダ (~) 文字をホーム ディレクトリに展開するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。