【问题标题】:Golang: Combine two numbersGolang:组合两个数字
【发布时间】:2015-01-19 16:41:53
【问题描述】:

我觉得问这个很愚蠢,但是我如何在 GO 中存档以下内容?

假设我有两个 int32,它们的值都是 33。
如何将它们组合成一个 int32,其值为 3333 而不是 66?

【问题讨论】:

    标签: go integer int64 int32


    【解决方案1】:
    var a, b int32 = 33, 33
    a = a*100 + b
    fmt.Println(a)
    

    Playground.

    编辑:这是一个根据数字计算填充的版本:

    func main() {
        var a, b int32 = 1234, 456
        a = a*padding(b) + b
        fmt.Println(a)
    }
    
    func padding(n int32) int32 {
        var p int32 = 1
        for p < n {
            p *= 10
        }
        return p
    }
    

    Playground.

    请注意,您还应该检查 int32 不会溢出。如果您不想担心溢出,可以改用big.Int

    【讨论】:

    • 是的,但是如果值不同,比如说 1223 和 5644 呢?
    【解决方案2】:

    与 Ainar-G 的解决方案相比,我不知道性能如何,但是这个呢:

    var a, b int32 = 33, 33
    result, err := strconv.Atoi(fmt.Sprintf("%d%d", a, b))
    if err != nil {
        panic(err)
    }        
    fmt.Println(int32(result))
    

    【讨论】:

      猜你喜欢
      • 2019-01-06
      • 1970-01-01
      • 2018-09-26
      • 1970-01-01
      • 2022-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-01
      相关资源
      最近更新 更多