1. var cwd string
    2. func init() {
    3. cwd, err := os.Getwd() // NOTE: wrong!
    4. if err != nil {
    5. log.Fatalf("os.Getwd failed: %v", err)
    6. }
    7. // log.Printf("Working directory = %s", cwd)
    8. }

    上面的init内部的cwd被声明为一个局部变量,覆盖了全局cwd的作用域,故第4行语句不能正确赋值给全局cwd
    此时会报局部cwd未使用的错误,但若取消第8行的注释,这个错也不会报。
    正确形式:

    1. var cwd string
    2. func init() {
    3. var err error
    4. cwd, err = os.Getwd()
    5. if err != nil {
    6. log.Fatalf("os.Getwd failed: %v", err)
    7. }
    8. }