英文:
How do you define an empty variable to store the value of a File struct?
问题
我正在尝试找到一种声明空变量以存储os.Create
和os.Open
的返回值的方法。代码如下:
func main() {
var path = "list.txt"
// 一些尝试:
// var file File{}
// var file *File
// 检查文件是否存在
var _, err = os.Stat(path)
// 如果文件不存在,创建文件
if os.IsNotExist(err) {
var file, err = os.Create(path)
// 如果文件存在,打开文件
} else {
var file, err = os.Open(path)
}
// 检查打开和创建文件时的错误
if err != nil {
log.Fatal(err)
return
}
// 延迟关闭文件
defer file.Close()
}
这两个尝试都导致以下错误:
./main.go:13: undefined: File
我确定这是我不知道自己不知道的事情之一。我知道的是:
- 根据
os/file.go
,我要找的返回值类型是*File
- 该类型在
os/file_unix.go
中被定义为一个结构体
有人能解释一下:
- 我如何创建一个空变量,然后用它来存储
os.Create
和os.Open
结果中的第一个变量? - 为什么我的两个尝试是错误的?
- 我还有什么误解吗?
英文:
I am trying to figure out a way to declare an empty variable to store the return values of os.Create
and os.Open
. Code:
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()
}
Both attempts result in the following error:
> ./main.go:13: undefined: File
I'm sure this is one of those things that I don't know I don't know. What I do know:
- Per
os/file.go
, type of the return value I'm looking for is*File
- That type is defined in
os/file_unix.go
as a struct
Can someone explain to me:
- How do I create an empty variable that can then be used to store the first variable in the results of
os.Create
andos.Open
. - Why were my two attempts wrong?
- Anything else that I'm misunderstanding.
答案1
得分: 5
定义变量的语法是 var <变量名> <类型>
,了解更多关于变量的信息请参考这里。
var file *os.File
var err error
你更新后的代码:
func main() {
path := "list.txt"
var file *os.File
var err error
// 检查文件是否存在
if err = os.Stat(path); os.IsNotExist(err) {
file, err = os.Create(path)
} else { // 如果文件存在,则打开它
file, err = os.Open(path)
}
// 检查打开和创建文件时是否出错
if err != nil {
log.Fatal(err)
return
}
// 延迟关闭文件
defer file.Close()
}
英文:
Defining variable is var <variable-name> <type>
, learn more about variables.
var file *os.File
var err error
Your updated code:
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()
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论