bitSet := true
var bitSetVar int8
我如何将 bitSet
分配给 bitSetVar
作为 1
我可以做这个:
if bitSet {
bitSetVar = 1
} else {
bitSetVar = 0
}
这是最好的方法吗?
原文由 Shahriar 发布,翻译遵循 CC BY-SA 4.0 许可协议
bitSet := true
var bitSetVar int8
我如何将 bitSet
分配给 bitSetVar
作为 1
我可以做这个:
if bitSet {
bitSetVar = 1
} else {
bitSetVar = 0
}
这是最好的方法吗?
原文由 Shahriar 发布,翻译遵循 CC BY-SA 4.0 许可协议
是的,这是最好的方法(快速且优化):
bitSet := true
bitSetVar := int8(0)
if bitSet {
bitSetVar = 1
}
using var bitSetVar int8
or bitSetVar := int8(0)
inside a function is the same, and you don’t need else
part, because the bitSetVar
initialized with zero在此之前 if
声明。
使用 if
可以(并且快速)像这样 B2i
函数:
func B2i(b bool) int8 {
if b {
return 1
}
return 0
}
但是你还有另一个选择使用 map
也(没有 if
快,但在这里展示的很好很漂亮):
var b2i = map[bool]int8{false: 0, true: 1}
像这个工作示例代码(带有注释输出):
package main
import "fmt"
var b2i = map[bool]int8{false: 0, true: 1}
var i2b = []bool{false, true}
func B2i(b bool) int8 {
if b {
return 1
}
return 0
}
func main() {
fmt.Println(B2i(true)) // 1
fmt.Println(B2i(false)) // 0
fmt.Println(b2i[true]) // 1
fmt.Println(b2i[false]) // 0
fmt.Println(i2b[1]) // true
fmt.Println(i2b[0]) // false
}
原文由 user6169399 发布,翻译遵循 CC BY-SA 3.0 许可协议
7 回答5.3k 阅读
6 回答6.9k 阅读✓ 已解决
4 回答2.3k 阅读
1 回答2k 阅读✓ 已解决
1 回答3.4k 阅读
2 回答877 阅读✓ 已解决
2 回答2.2k 阅读
因为
int8
的零值是0
,所以不需要 else 分支。没有从
bool
到整数类型的 转换。 if 语句是你能做的最好的。