在单个语句上向字符串添加整数值

时间:2017-09-27 07:04:19

标签: string go int type-conversion

我想知道如何将整数值添加到字符串值“10”。我知道我可以通过首先将string转换为int来完成此操作,然后在添加整数后我可以将其转换回string。但我可以在golang的单个语句中完成此任务。例如,我可以使用多行来完成此操作:

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

但有什么方法可以在一个声明中完成这个任务?

1 个答案:

答案 0 :(得分:7)

标准库中没有准备好的功能用于您想要做的事情。原因是因为在$iv可用的数字中添加一个数字而将结果作为另一个string添加(非常)效率低下

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

但是如果你有一个现成的util函数,那么一切都变成了一个声明:

string

使用它:

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

输出(在Go Playground上尝试):

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