Go에서 문자열을 정수 유형으로 변환하는 방법

Suraj Joshi 2023년1월30일 Go Go String
  1. strconv 패키지의Atoi()함수
  2. strconv 패키지의ParseInt()함수
  3. fmt.Sscanf 방법
  4. 방법 비교
Go에서 문자열을 정수 유형으로 변환하는 방법

변수를int로 정의하면 변수는int 만 될 수 있습니다. 변수의 문자열 데이터 타입을 변환하지 않으면 문자열을 할당 할 수 없습니다. Go에는strconv라는 내장 패키지가 있으며 Go 문자열을 int로 변환하기 위해Atoi(),Sscanf()ParseInt()의 세 가지 함수를 제공합니다.

strconv 패키지의Atoi()함수

strconv패키지는 기본 데이터 유형의 문자열 표현과의 변환을 구현합니다. 문자열을 정수로 변환하기 위해strconv 패키지의Atoi()함수를 사용합니다. AtoiASCII 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()는 가장 유연하지만 가장 유연한 메소드입니다.

튜토리얼이 마음에 드시나요? DelftStack을 구독하세요 YouTube에서 저희가 더 많은 고품질 비디오 가이드를 제작할 수 있도록 지원해주세요. 구독하다
작가: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

관련 문장 - Go String