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

Suraj Joshi 2023년1월30일 2020년6월14일 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()는 가장 유연하지만 가장 유연한 메소드입니다.

Author: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

관련 문장 - Go String

  • Go에서 int 값을 문자열로 변환하는 방법은 무엇입니까
  • Go에서 날짜 문자열을 구문 분석하는 방법
  • Go에서 문자열을 효율적으로 연결하는 방법
  • Go에서 여러 줄 문자열을 작성하는 방법
  • Golang에서 고정 길이의 임의 문자열 생성