admin管理员组文章数量:1033382
Go 语言 bool 类型转 int 类型的七种方法
类型转换在编程中非常重要,因为在大多数情况下,类型是不存在的,数据都是二进制形式存储的。但是为了更好的阅读性,很多情况下我们需要类型功能以及类型转换。
大多数语言都有一种将布尔值转换为整数的方法。在 python 中,您可以使用 int(value)
,在 JavaScript 中您无需关心此类需求,这样的例子不胜枚举。此外,从整数转换为布尔值并不难,您只需使用 value != 0
即可。这为除 0
之外的每个数字提供了 true
,这是您的选择(如果可以的话),您可能希望负数返回 false
,或者仅返回1
返回 true
,但这些都很容易实现。
Go 没有很好的方法来转换,因此本文分享七种使用 Go 语言将 bool 类型转 int 类型的方法。
方法一、最简单易懂的逻辑
代码语言:javascript代码运行次数:0运行复制func boolToInt(b bool) int {
if b {
return 1
}
return 0
}
方法二、性能最高的方法
代码语言:javascript代码运行次数:0运行复制func Bool2int(b bool) int {
// The compiler currently only optimizes this form.
// See issue 6011.
var i int
if b {
i = 1
} else {
i = 0
}
return i
}
为什么这段代码是七种方法中性能最好的,请参考这篇文章:/
方法三、使用switch
代码语言:javascript代码运行次数:0运行复制func convertViaSwitch(b bool) int {
switch b {
case true:
return 1
case false:
return 0
default:
panic("this doesn't really need to exist")
}
}
方法四和五、使用map
代码语言:javascript代码运行次数:0运行复制func convertViaMap(b bool) int {
table := map[bool]int{
true: 1,
false: 0,
}
return table[b]
}
代码语言:javascript代码运行次数:0运行复制var table = map[bool]int{
true: 1,
false: 0,
}
func convertViaMap(b bool) int {
return table[b]
}
方法六、使用list
代码语言:javascript代码运行次数:0运行复制var list = []bool{
false,
true,
}
func convertViaList(b bool) int {
return slices.Index(list, b)
}
方法七、快速平方根
代码语言:javascript代码运行次数:0运行复制float fastInvSqrt(float x) {
int i = *(int*)&x;
i = 0x5f3759df - (i >> 1);
float y = *(float*)&i;
return y * (1.5F - 0.5F * x * y * y);
}
这是《雷神之锤 III》中使用的一个令人拍案叫绝的算法,思路适用于很多语言,执行效率也仅次于官方优化过的方法二。
Go 语言 bool 类型转 int 类型的七种方法
类型转换在编程中非常重要,因为在大多数情况下,类型是不存在的,数据都是二进制形式存储的。但是为了更好的阅读性,很多情况下我们需要类型功能以及类型转换。
大多数语言都有一种将布尔值转换为整数的方法。在 python 中,您可以使用 int(value)
,在 JavaScript 中您无需关心此类需求,这样的例子不胜枚举。此外,从整数转换为布尔值并不难,您只需使用 value != 0
即可。这为除 0
之外的每个数字提供了 true
,这是您的选择(如果可以的话),您可能希望负数返回 false
,或者仅返回1
返回 true
,但这些都很容易实现。
Go 没有很好的方法来转换,因此本文分享七种使用 Go 语言将 bool 类型转 int 类型的方法。
方法一、最简单易懂的逻辑
代码语言:javascript代码运行次数:0运行复制func boolToInt(b bool) int {
if b {
return 1
}
return 0
}
方法二、性能最高的方法
代码语言:javascript代码运行次数:0运行复制func Bool2int(b bool) int {
// The compiler currently only optimizes this form.
// See issue 6011.
var i int
if b {
i = 1
} else {
i = 0
}
return i
}
为什么这段代码是七种方法中性能最好的,请参考这篇文章:/
方法三、使用switch
代码语言:javascript代码运行次数:0运行复制func convertViaSwitch(b bool) int {
switch b {
case true:
return 1
case false:
return 0
default:
panic("this doesn't really need to exist")
}
}
方法四和五、使用map
代码语言:javascript代码运行次数:0运行复制func convertViaMap(b bool) int {
table := map[bool]int{
true: 1,
false: 0,
}
return table[b]
}
代码语言:javascript代码运行次数:0运行复制var table = map[bool]int{
true: 1,
false: 0,
}
func convertViaMap(b bool) int {
return table[b]
}
方法六、使用list
代码语言:javascript代码运行次数:0运行复制var list = []bool{
false,
true,
}
func convertViaList(b bool) int {
return slices.Index(list, b)
}
方法七、快速平方根
代码语言:javascript代码运行次数:0运行复制float fastInvSqrt(float x) {
int i = *(int*)&x;
i = 0x5f3759df - (i >> 1);
float y = *(float*)&i;
return y * (1.5F - 0.5F * x * y * y);
}
这是《雷神之锤 III》中使用的一个令人拍案叫绝的算法,思路适用于很多语言,执行效率也仅次于官方优化过的方法二。
本文标签: Go 语言 bool 类型转 int 类型的七种方法
版权声明:本文标题:Go 语言 bool 类型转 int 类型的七种方法 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/jiaocheng/1748034002a2244431.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论