2011-12-06 41 views
16

Có cách nào để xây dựng các bool thành các số nguyên hoặc ngược lại không? Tôi đã cố gắng truyền bình thường, nhưng vì họ sử dụng các loại cơ bản khác nhau, chuyển đổi không phải là cách cổ điển. Tôi đã đổ qua một số đặc điểm kỹ thuật, và tôi chưa tìm thấy câu trả lời.Có cách nào để chuyển đổi số nguyên thành bool khi di chuyển hoặc ngược lại không?

Trả lời

28

Int để bool rất dễ dàng, chỉ cần x != 0 sẽ làm các trick. Để đi theo con đường khác, vì Go không hỗ trợ một nhà điều hành ternary, bạn phải làm:

var x int 
if b { 
    x = 1 
} else { 
    x = 0 
} 

Bạn có thể dĩ nhiên đặt điều này trong một hàm:

func Btoi(b bool) int { 
    if b { 
     return 1 
    } 
    return 0 
} 

Có rất nhiều cách giải thích boolean có thể về các số nguyên, không có cách nào trong số chúng nhất thiết là tự nhiên, rằng nó có ý nghĩa khi phải nói những gì bạn muốn nói.

Theo kinh nghiệm của tôi (YMMV), bạn không phải thực hiện việc này thường xuyên nếu bạn đang viết mã tốt. Đôi khi nó hấp dẫn để có thể viết một biểu thức toán học dựa trên một boolean, nhưng các nhà bảo trì của bạn sẽ cảm ơn bạn vì đã tránh nó.

+3

vâng nhưng nó làm rối tung mã của tôi –

5
var a int = 3 
var b bool = a != 0 

Tôi chỉ giảm này vào demo box trên golang front page:

package main 

import "fmt" 

func main() { 
var a int = 3 
var b bool = a != 0 
    fmt.Println("Hello, 世界", b) 
} 

Output:

Hello, 世界 true 
3

Dưới đây là một thủ thuật để chuyển đổi từ int để bool:

x := 0 
newBool := !(x == 0) // returns false 

nơi xint biến bạn muốn chuyển đổi từ.

Các vấn đề liên quan