前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Go 语言 bool 类型转 int 类型的七种方法

Go 语言 bool 类型转 int 类型的七种方法

原创
作者头像
Power
发布2025-04-02 00:08:03
发布2025-04-02 00:08:03
12000
代码可运行
举报
运行总次数:0
代码可运行

类型转换在编程中非常重要,因为在大多数情况下,类型是不存在的,数据都是二进制形式存储的。但是为了更好的阅读性,很多情况下我们需要类型功能以及类型转换。

大多数语言都有一种将布尔值转换为整数的方法。在 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
}

为什么这段代码是七种方法中性能最好的,请参考这篇文章:https://0x0f.me/blog/golang-compiler-optimization/

方法三、使用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》中使用的一个令人拍案叫绝的算法,思路适用于很多语言,执行效率也仅次于官方优化过的方法二。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 方法一、最简单易懂的逻辑
  • 方法二、性能最高的方法
  • 方法三、使用switch
  • 方法四和五、使用map
  • 方法六、使用list
  • 方法七、快速平方根
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档