【问题标题】:Adding a integer value to string on a single statement在单个语句中将整数值添加到字符串
【发布时间】:2018-03-08 13:32:26
【问题描述】:

我想知道如何将整数值添加到像“10”这样的字符串值。我知道我可以通过首先将string 转换为int 然后在添加整数之后将其转换回string 来实现这一点。但是我可以在 golang 的单个语句中完成此操作吗?例如,我可以用这样的多行来做到这一点:

i, err := strconv.Atoi("10")
// handle error
i = i + 5
s := strconv.Itoa(i)

但是有什么方法可以让我在一个语句中完成这个任务?

【问题讨论】:

    标签: string go int type-conversion


    【解决方案1】:

    标准库中没有针对您想要执行的操作的现成函数。这样做的原因是因为将一个数字添加到一个可用作 string 的数字上并将结果作为另一个 string 是(非常)效率低下

    string 类型的模型(内存表示)不支持有效地向其添加数字(更不用说string 值是不可变的,必须创建一个新值); int 的内存模型确实支持高效添加(例如,CPU 也有直接操作)。没有人愿意将ints 添加到存储为string 值的数字中。如果您想添加数字,请准备好您的数字:数字。当您要打印或传输时,只需将其转换为string(如果必须)。

    但是如果你有一个现成的 util 函数,那么一切都会变成一个单一的语句:

    func add(s string, n int) (string, error) {
        i, err := strconv.Atoi(s)
        if err != nil {
            return "", err
        }
        return strconv.Itoa(i + n), nil
    }
    

    使用它:

    s, err := add("10", 5)
    fmt.Println(s, err)
    

    输出(在Go Playground 上试试):

    15 <nil>
    

    【讨论】:

      猜你喜欢
      • 2018-07-06
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 2013-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多