2011-11-03 77 views
0

考虑以下(没用)Go功能:转到MinGW的编译器抱怨if-else语句

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

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

main.go:15: function ends without a return statement

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

这是行为的设计,还是它只是还没有在Go MinGW编译器中实现?

回答

2

简单的谷歌搜索的确切编译器错误信息产生this bugtracker issue。所以我不会说这是“按设计”,因为它看起来更像是“它恰好是以这种方式实施的”。另见this thread

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