cam*_*ge 0 string int type-conversion go
我想知道如何将整数值添加到像"10"这样的字符串值.我知道我可以通过将其string转换为int第一个然后添加整数后将其转换回来实现此目的string.但我可以在golang的单个语句中完成此任务.例如,我可以用这样的多行来做到这一点:
i, err := strconv.Atoi("10")
// handle error
i = i + 5
s := strconv.Itoa(i)
Run Code Online (Sandbox Code Playgroud)
但是,有什么办法可以在一个声明中完成这个任务吗?
标准库中没有准备好的功能可用于您想要执行的操作.其原因在于,将数字添加到可用作为a的数字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
}
Run Code Online (Sandbox Code Playgroud)
使用它:
s, err := add("10", 5)
fmt.Println(s, err)
Run Code Online (Sandbox Code Playgroud)
输出(在Go Playground上试试):
15 <nil>
Run Code Online (Sandbox Code Playgroud)