MinGW编译器抱怨if-else语句

Consider the following (useless) Go function:

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

This gives me the following compiler error:

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

However, if i return a value outside the if-else block (before the end of the function), it compiles without errors.

Is this behavior by design, or is it something simply not yet implemented in the Go MinGW compiler?

Simple googling for the exact compiler error message yields this bugtracker issue. So I'd not say it's "by design" as it looks more like "it'd just happened to be implemented this way". See also this thread.

It's by design. Write:

package main

import "fmt"

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

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

Output:

0 42