2011-12-06 16 views
16

boolを整数に、またはその逆にキャストする組み込み方法はありますか?私は通常のキャスティングを試みましたが、異なる基底型を使用しているため、古典的な方法では変換できません。私は仕様のいくつかを注いだ、と私はまだ答えを見つけていない。整数をboolに変換する方法はありますか、逆もありますか?

答えて

28

のIntをブール値に簡単ですが、ちょうどx != 0は、トリックを行います。 Goは三項演算子をサポートしていませんので、他の道を行くために、あなたは何をする必要があるだろう:

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

がとてもあります。あなたは、もちろん機能でこれを置くことができ

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

整数の多くの可能なブール解釈、それらのどれも必ずしも自然なものではなく、あなたが意味することを言わなければならないのは意味がある。

私の経験(YMMV)では、良いコードを書いている場合、これを頻繁に行う必要はありません。ブール値に基づいて数式を書くことができるのは時々魅力的ですが、メンテナーはそれを避けることに感謝します。ここで

+3

ええ、それは私のコードゴルフを台無しにする –

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

私はちょうどgolang front pagedemo boxにこれを落とし:

package main 

import "fmt" 

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

出力:

Hello, 世界 true 
3

intからboolに変換するトリックです:

xはあなたから変換する int変数である
x := 0 
newBool := !(x == 0) // returns false 

関連する問題