Go에서 문자열을 정수 유형으로 변환하는 방법
변수를int
로 정의하면 변수는int
만 될 수 있습니다. 변수의 문자열 데이터 타입을 변환하지 않으면 문자열을 할당 할 수 없습니다. Go에는strconv
라는 내장 패키지가 있으며 Go 문자열을 int로 변환하기 위해Atoi()
,Sscanf()
및ParseInt()
의 세 가지 함수를 제공합니다.
strconv
패키지의Atoi()
함수
strconv
패키지는 기본 데이터 유형의 문자열 표현과의 변환을 구현합니다. 문자열을 정수로 변환하기 위해strconv
패키지의Atoi()
함수를 사용합니다. Atoi
는ASCII to integer
의 약자입니다.
package main
import (
"fmt"
"strconv"
)
func main() {
age := "13"
fmt.Printf("Datatype of age before conversion : %T\n", age)
fmt.Println("After Conversion:")
if sv, err := strconv.Atoi(age); err == nil {
fmt.Printf("%T, %v\n", sv, sv)
}
}
출력:
Datatype of age before conversion : string
After Conversion:
int, 13
입력 문자열이 정수 형식이 아닌 경우 함수는 0을 반환합니다.
package main
import (
"fmt"
"strconv"
)
func main() {
age := "abc"
fmt.Printf("Datatype of age before conversion : %T\n", age)
fmt.Println("After Conversion:")
sv, _ := strconv.Atoi(age)
fmt.Printf("%T, %v\n", sv, sv)
}
출력:
Datatype of age before conversion : string
After Conversion:
int, 0
strconv
패키지의ParseInt()
함수
strconv.ParseInt(s, base, bitSize)
메소드는 주어진base
(0, 2-36)와 비트 크기 (0-64)에서 입력 문자열s
를 해석하고 해당 정수를 리턴합니다. Atoi(s)
는ParseInt(s, 10, 0)
와 같습니다.
package main
import (
"fmt"
"reflect"
"strconv"
)
func main() {
x := "123"
fmt.Println("Value of x before conversion: ", x)
fmt.Println("Datatype of x before conversion:", reflect.TypeOf(x))
intStr, _ := strconv.ParseInt(x, 10, 64)
fmt.Println("Value after conversion: ", intStr)
fmt.Println("Datatype after conversion:", reflect.TypeOf(intStr))
}
출력:
Value of x before conversion: 123
Datatype of x before conversion: string
Value after conversion: 123
Datatype after conversion: int64
fmt.Sscanf
방법
fmt.Sscanf()
는 숫자를 보유한 사용자 정의 문자열을 구문 분석하는 데 좋습니다. Sscanf()
함수는 인수 문자열을 스캔하여 형식으로 정의 된대로 연속 공백으로 구분 된 값을 연속 인수에 저장하고 구문 분석 된 항목 수를 반환합니다.
package main
import (
"fmt"
)
func main() {
s := "id:00234"
var i int
if _, err := fmt.Sscanf(s, "id:%5d", &i); err == nil {
fmt.Println(i)
}
}
출력:
234
방법 비교
strconv.ParseInt()
는 모든 메소드 중에서 가장 빠르며,strconv.Atoi()
는strconv.ParseInt()
보다 약간 느리고fmt.Sscanf()
는 가장 유연하지만 가장 유연한 메소드입니다.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn