doukengsha9472 2013-09-09 12:15
浏览 66
已采纳

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

The following works as a function to open a file

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
}

however, this does not work, when I try to use := to declare the variable file

func updateFrequencies(filename string, frequencyForWord map[string]int) {
  if file, err := os.Open(filename); err != nil {
     ....
  }
}

error: ./word_frequencies_2.go:30: undefined: file

But if I changed this slightly, this works

file, err := os.Open(filename)
if err != nil {
   log.Printf("Failed to open the file: %s.", filename)
   return
}

why can't I use := as part of the if statement?

  • 写回答

2条回答 默认 最新

  • dtp791357 2013-09-09 12:20
    关注

    Why can't I use := as part of the if statement?

    You can, but then the variables are defined within the scope of the if block. So, file is not defined outside of your if block.

    The same rule applies to definitions in for, switch, and similar blocks.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退