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

以下作为打开文件的函数


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 语句的一部分?


婷婷同学_
浏览 213回答 2
2回答

墨色风雨

为什么我不能使用 := 作为 if 语句的一部分?你可以,但是变量是在if块的范围内定义的。所以,file不是在你的if块之外定义的。该规则同样适用于定义for,switch以及类似的块。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go