我想知道如何将整数值添加到字符串值“10”。我知道我可以通过首先将string
转换为int
来完成此操作,然后在添加整数后我可以将其转换回string
。但我可以在golang的单个语句中完成此任务。例如,我可以使用多行来完成此操作:
i, err := strconv.Atoi("10")
// handle error
i = i + 5
s := strconv.Itoa(i)
但有什么方法可以在一个声明中完成这个任务?
答案 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)