11

path.Dir()プラットフォーム固有のディレクトリを持つUnixおよびWindowsで使用したいと思います。コードを見てください:

package main

import (
    "fmt"
    "path"
)

func main() {
    fmt.Println(`path.Dir("a/b/c"): `, path.Dir("a/b/c"))
    fmt.Println(`path.Dir("c:\foo\bar.exe"): `, path.Dir(`c:\foo\bar.exe`))
}

この出力

path.Dir("a/b/c"):  a/b
path.Dir("c:\foo\bar.exe"):  .

path.Dir()(Windows)への2回目の呼び出しは次のようになります

c:\foo

path.dir()Windowsで実行しているプログラムにWindowsセパレーターを使用するように指示することはできますか?\ または、常にバックスラッシュをフォワードスラッシュ( )に変換する必要があります/か?ここで好ましい戦略は何ですか?

4

1 に答える 1

15

「問題」がどこにあるかわかります。golang-nutsでのこの議論は、プラットフォームに依存する操作にpath.Dir()常に使用/され、使用される関数であるというヒントを私に与えました。filepath.Dir()

package main

import (
    "fmt"
    "path/filepath"
)

func main() {
    fmt.Println(`filepath.Dir("a/b/c"): `, filepath.Dir("a/b/c"))
    fmt.Println(`filepath.Dir("c:\foo\bar.exe"): `, filepath.Dir(`c:\foo\bar.exe`))
}

Windowsの場合:

filepath.Dir("a/b/c"):  a\b
filepath.Dir("c:\foo\bar.exe"):  c:\foo
于 2012-08-26T17:46:14.207 に答える