download1214 2014-06-17 03:15
浏览 54
已采纳

Golang if / else无法编译

I cannot figure out why this will not compile. It says functions ends without a return statement, but when I add a return after the else, it still won't compile.

func (d Foo) primaryOptions() []string{

if(d.Line == 1){
    return []string{"me", "my"}
}
else{
    return []string{"mee", "myy"}
}
}
  • 写回答

1条回答 默认 最新

  • drkrsx3135168 2014-06-17 03:23
    关注

    Go forces else to be on the same line as the if brace.. because of its "auto-semicolon-insertion" rules.

    So it must be this:

    if(d.Line == 1) {
        return []string{"me", "my"}
    } else { // <---------------------- this must be up here
        return []string{"mee", "myy"}
    }
    

    Otherwise, the compiler inserts a semicolon for you:

    if(d.Line == 1) {
        return []string{"me", "my"}
    }; // <---------------------------the compiler does this automatically if you put it below
    else {
        return []string{"mee", "myy"}
    }
    

    ..hence your error. I will link to the relevant documentation shortly.

    EDIT: Effective Go has information regarding this.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助
  • ¥15 STM32控制MAX7219问题求解答