为了账号安全,请及时绑定邮箱和手机立即绑定

:= 运算符和 Golang 中的 if 语句

:= 运算符和 Golang 中的 if 语句

Go
婷婷同学_ 2021-06-01 13:08:38
以下作为打开文件的函数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块之外定义的。

该规则同样适用于定义forswitch以及类似的块。

查看完整回答
反对 回复 2021-06-28
  • 2 回答
  • 0 关注
  • 208 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信