2017-09-27 1 views
0

"10"과 같은 문자열 값에 정수 값을 어떻게 추가 할 수 있을지 궁금합니다. stringint으로 먼저 변환 한 다음 정수를 더한 후 string으로 다시 변환 할 수 있음을 알고 있습니다. 하지만 golang의 단일 성명서에서이를 수행 할 수 있습니까? 예를 들어 다음과 같이 여러 줄을 사용하여이 작업을 수행 할 수 있습니다.단일 문장에서 문자열에 정수 값 추가

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

하지만이 방법을 하나의 문장으로 수행 할 수 있습니까?

답변

7

표준 라이브러리에는 원하는 기능을위한 준비 기능이 없습니다. 그 이유는 string으로 사용할 수있는 숫자에 숫자를 추가하고 그 결과가 string 일 때 (끔찍하게) 이 비효율적이기 때문입니다..

string 유형의 모델 (메모리 표현)은 숫자를 효율적으로 추가하는 것을 지원하지 않습니다. string 값은 변경 불가능하며 새 값을 만들어야합니다. int의 메모리 모델은 예를 들어 효율적으로 추가 할 수 있도록 지원합니다 (CPU도 이에 직접 조작 할 수 있습니다). 어느 누구도 string 값으로 저장된 숫자에 int을 추가하려고합니다. 숫자를 추가하려면 숫자를 숫자로 준비하십시오 : 숫자. 인쇄하거나 전송하려면 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 
} 

그것을 사용 :

s, err := add("10", 5) 
fmt.Println(s, err) 

출력합니다 (Go Playground에 그것을 시도) :

15 <nil> 
당신이 그것을 위해 기능 UTIL 준비가있는 경우

그러나 모든 것이 하나의 문이된다

관련 문제