是否存在将bool转换为整数的内置方法,反之亦然?我尝试过普通的转换,但由于它们使用不同的底层类型,转换是不可能的经典方式.我已经倾注了一些规范,但我还没有找到答案.
Ste*_*ark 31
Int to bool很容易,只是x != 0会做的伎俩.换句话说,由于Go不支持三元运算符,您必须这样做:
var x int
if b {
x = 1
} else {
x = 0
}
Run Code Online (Sandbox Code Playgroud)
你当然可以将它放在一个函数中:
func Btoi(b bool) int {
if b {
return 1
}
return 0
}
Run Code Online (Sandbox Code Playgroud)
整数有很多可能的布尔解释,它们都不一定是自然的,所以必须说出你的意思是有道理的.
根据我的经验(YMMV),如果您编写好的代码,则不必经常这样做.有时候能够根据布尔值编写数学表达式很有吸引力,但是你的维护者会感谢你避免使用它.
没有从整数类型到整数类型的转换,bool反之亦然。
使用不等式运算符将整数转换为bool值:
b := i != 0
Run Code Online (Sandbox Code Playgroud)
使用 if 语句将 a 转换bool为整数类型:
var i int
if b {
i = 1
}
Run Code Online (Sandbox Code Playgroud)
因为整数类型的零值为 0,所以其他答案中显示的 else 分支不是必需的。
这里有一个窍门,从转换int到bool:
x := 0
newBool := !(x == 0) // returns false
Run Code Online (Sandbox Code Playgroud)
您要从中转换x的int变量在哪里。
只是为了显示 TMTOWTDT
package main
import (
"fmt"
"unsafe"
)
func main() {
fmt.Println(bool2int(true))
fmt.Println(bool2int(false))
}
func bool2int(a bool) uint64 {
return *(*uint64)(unsafe.Pointer(&a))&1
}
Run Code Online (Sandbox Code Playgroud)
https://play.golang.org/p/eULE6cJO_c0
var a int = 3
var b bool = a != 0
Run Code Online (Sandbox Code Playgroud)
package main
import "fmt"
func main() {
var a int = 3
var b bool = a != 0
fmt.Println("Hello, ??", b)
}
Run Code Online (Sandbox Code Playgroud)
输出:
Hello, ?? true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23590 次 |
| 最近记录: |