我试图找出一种方法来声明一个空变量来存储os.Create
和os.Open
的返回值。代码:
func main() {
var path = "list.txt"
// Some attempts:
// var file File{}
// var file *File
// Check if file exists
var _, err = os.Stat(path)
// If new file, create it
if os.IsNotExist(err) {
var file, err = os.Create(path)
// If file exists, open it
} else {
var file, err = os.Open(path)
}
// Check errors opening and creating file
if err != nil {
log.Fatal(err)
return
}
// Defer closing file
defer file.Close()
}
两次尝试都会导致以下错误:
./ main.go:13:undefined:File
我确定这是我不知道的我不知道的事情之一。我所知道的:
os/file.go
,我找到的返回值类型为*File
os/file_unix.go
中定义为struct 有人可以向我解释一下:
os.Create
和os.Open
结果中的第一个变量。答案 0 :(得分:1)
定义变量为var <variable-name> <type>
,了解详情about variables。
var file *os.File
var err error
您的更新代码:
func main() {
path := "list.txt"
var file *os.File
var err error
// Check if file exists
if err = os.Stat(path); os.IsNotExist(err) {
file, err = os.Create(path)
} else { // If file exists, open it
file, err = os.Open(path)
}
// Check errors opening and creating file
if err != nil {
log.Fatal(err)
return
}
// Defer closing file
defer file.Close()
}