考虑以下(无用的)Go函数:
func domagic(n int) int {
if n > 10 {
return n;
} else {
return 0;
}
}
这给了我以下编译器错误:
main.go:15:函数结束时没有返回语句
但是,如果我在if-else块之外返回一个值(在函数结束之前),则编译时没有错误。
这种行为是设计的,还是在Go MinGW 编译器中尚未实现?
答案 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