var cwd stringfunc init() {cwd, err := os.Getwd() // NOTE: wrong!if err != nil {log.Fatalf("os.Getwd failed: %v", err)}// log.Printf("Working directory = %s", cwd)}
上面的init内部的cwd被声明为一个局部变量,覆盖了全局cwd的作用域,故第4行语句不能正确赋值给全局cwd
此时会报局部cwd未使用的错误,但若取消第8行的注释,这个错也不会报。
正确形式:
var cwd stringfunc init() {var err errorcwd, err = os.Getwd()if err != nil {log.Fatalf("os.Getwd failed: %v", err)}}
