我仍在努力学习 Golang 的基础知识。


考虑以下示例代码:


func OpenOutputFile(name string) (fp *os.File) {

  fp, err := os.Create(name)

  if err != nil {

      panic(err)

  }


  defer func() {

      if err := fp.Close(); err != nil {

          panic(err)

      }

  }()


  return fp

}

我会假设调用:


fp := OpenOutputFile("output.txt")

现在将创建fp一个文件指针 ( *os.File),以便我可以调用如下语句:


io.WriteString(fp, "Hello World")

在另一个函数中。但是调用这个方法的时候,报错了:


0 write output.txt: bad file descriptor

所以看起来返回的指针无效。我怎样才能返回一个正确格式的指针来使用io.WriteString?


我感谢您的帮助!


注意:当文件指针的创建和文件指针的写入存在于同一方法中时,一切都会按预期执行。将逻辑分解为函数会导致其行为不符合预期。