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.