2014-06-17 13 views
5

Tôi không thể hiểu tại sao điều này sẽ không biên dịch. Nó nói rằng các hàm kết thúc mà không có một câu lệnh trả về, nhưng khi tôi thêm một sự trả về sau cái khác, nó vẫn không biên dịch.Golang nếu/người khác không biên soạn

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

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

Trả lời

9

Go lực lượng else là trên cùng một dòng như if cú đúp .. vì các quy tắc "tự động dấu chấm phẩy-chèn" của nó.

Vì vậy, nó phải được điều này:

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

Nếu không, trình biên dịch chèn một dấu chấm phẩy cho bạn:

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

..hence lỗi của bạn. Tôi sẽ liên kết với tài liệu liên quan ngay.

EDIT: Effective Go has information regarding this.