String 将整数值添加到单个语句的字符串中

String 将整数值添加到单个语句的字符串中,string,go,int,type-conversion,String,Go,Int,Type Conversion,我想知道如何将整数值添加到字符串值中,如“10”。我知道我可以通过先将字符串转换为int,然后在添加整数后再将其转换回字符串,来实现这一点。但我能在golang的一句话中做到这一点吗。例如,我可以使用多行代码来执行此操作,如下所示: i, err := strconv.Atoi("10") // handle error i = i + 5 s := strconv.Itoa(i) 但是,有什么方法可以在一条语句中实现这一点吗?标准库中没有现成的函数来完成您想要做的事情。这样做的原因是,将一个

我想知道如何将整数值添加到字符串值中,如“10”。我知道我可以通过先将
字符串
转换为
int
,然后在添加整数后再将其转换回
字符串
,来实现这一点。但我能在golang的一句话中做到这一点吗。例如,我可以使用多行代码来执行此操作,如下所示:

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

但是,有什么方法可以在一条语句中实现这一点吗?

标准库中没有现成的函数来完成您想要做的事情。这样做的原因是,将一个数字添加到一个可用的
字符串
中,并将结果作为另一个
字符串
是(非常)低效的

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

但是,如果您有一个ready 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)
输出(在上尝试):

15
15 <nil>