4
package main
import "os"
import "fmt"

func main() {
    _, err := os.Getwd()
    if err != nil {
        fmt.Println(err)
    }
}

これにより、EOF のエラーが出力されることがあります。誰かが理由を知っていますか?通常、以前にいくつかの os.Chdir が発生していますが、エラーは発生しません。

GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread -fno-common"
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"

go version go1.0.3
4

1 に答える 1

1

これは、 syscallos.Getwdをサポートしていないプラットフォームで、作業ディレクトリが存在しない場合に EOF をエラーとして返すバグです。getwdこれは、OS X での再現可能なテスト ケースです。

package main
import "os"
import "fmt"

const DIR = "/tmp/somedir"

func main() {
    os.Remove(DIR)
    if err := os.Mkdir(DIR, 0755); err != nil {
      fmt.Println(err)
      return
    }
    if err := os.Chdir(DIR); err != nil {
      fmt.Println(err)
      return
    }
    if err := os.Remove(DIR); err != nil {
      fmt.Println(err)
      return
    }
    wd, err := os.Getwd()
    fmt.Println("err:", err)
    fmt.Println("wd:", wd)
}

出力:

err: EOF
wd: 
于 2012-12-22T08:08:20.620 に答える