2017-09-27 145 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>