2017-09-27 147 views
0

我想知道如何将一个整数值添加到像“10”这样的字符串值。我知道我可以通过首先将string转换为int,然后在添加整数后将其转换回string。但是,我可以在golang的一个声明中完成这个任务吗?例如,我可以多行这样做:在一条语句中向字符串添加整数值

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

但是有没有我可以在一个单独的语句完成这个办法吗?

回答

7

标准库中没有准备好的功能来执行您想要的功能。原因是因为在string中添加一个数字作为另一个string,结果是(非常)效率低下

string类型的模型(内存表示)不支持有效地添加数字(更不用说string值是不可变的,必须创建一个新的数值)。例如int的存储器模型确实支持有效地添加(并且CPU也有直接操作)。没有人想要将int s添加到存储为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>