Go MinGW编译器抱怨if-else语句

时间:2011-11-03 12:51:48

标签: go

考虑以下(无用的)Go函数:

func domagic(n int) int {
    if n > 10 {
        return n;
    } else {
        return 0;
    }
}

这给了我以下编译器错误:

  

main.go:15:函数结束时没有返回语句

但是,如果我在if-else块之外返回一个值(在函数结束之前),则编译时没有错误。

这种行为是设计的,还是在Go MinGW 编译器中尚未实现?

2 个答案:

答案 0 :(得分:2)

针对确切的编译器错误消息进行简单的Google搜索会产生this bugtracker issue。所以我不会说它是“按设计”,因为它看起来更像是“它恰好以这种方式实现”。另请参阅this thread

答案 1 :(得分:1)

这是设计的。写:

package main

import "fmt"

func domagic(n int) int {
    if n > 10 {
        return n
    }
    return 0
}

func main() {
    fmt.Println(domagic(7), domagic(42))
}

输出:

0 42