以下作为打开文件的函数func openFile(filename string) { var file *os.File var err error if file, err = os.Open(filename); err != nil { log.Printf("Failed to open the file: %s.", filename) return } defer file.Close() // blahblahblah}但是,当我尝试使用 := 来声明变量文件时,这不起作用func updateFrequencies(filename string, frequencyForWord map[string]int) { if file, err := os.Open(filename); err != nil { .... }}错误:./word_frequencies_2.go:30: 未定义:文件但是如果我稍微改变一下,这会起作用file, err := os.Open(filename)if err != nil { log.Printf("Failed to open the file: %s.", filename) return}为什么我不能使用 := 作为 if 语句的一部分?
2 回答
墨色风雨
TA贡献1853条经验 获得超6个赞
为什么我不能使用 := 作为 if 语句的一部分?
你可以,但是变量是在if
块的范围内定义的。所以,file
不是在你的if
块之外定义的。
该规则同样适用于定义for
,switch
以及类似的块。
- 2 回答
- 0 关注
- 208 浏览
添加回答
举报
0/150
提交
取消