strconv
패키지는 기본 데이터 타입을 문자열로 변환해준다.
숫자 변환은 가장 일반적으로 Atoi(string to int)
및 itoa(int to string)
이다.
i, err := strconv.Atoi("-42")
s := strconv.Itoa(-42)
각 기본 데이터 타입은 다음과 같이 변환할 수 있다.
b, err := strconv.ParseBool("true")
f, err := strconv.ParseFloat("3.1415", 64)
i, err := strconv.ParseInt("-42", 10, 64)
u, err := strconv.ParseUint("42", 10, 64)
타입 변환은 가장 넓은 유형(float64, int64) 을 반환하지만 size 인수가 더 좁은 폭을 지정하면 데이터 손실 없이 변환될 수 있다.
s := ""2147483647" // int32의 가장 큰 값
i64, err := strconv.ParseInt(s, 10, 32)
...
int := int32(i64)
const IntSize = intSize
IntSize 는 int 또는 uint 값의 바트 크기이다.
var ErrRange = errors.New("value out of range")
ErrRange
는 값이 대상 유형의 범위를 벗어 났음을 나타낸다.
var ErrSyntax = error.New("invalid syntax")
ErrSyntax
는 값에 대상 유형에 올바른 구문이 없음을 나타낸다.
func AppendBool(dst []byte, b bool) []byte
b
값에 따라 true
또는 false
를 dst
에 추가하고 확장 버퍼를 반환한다.
func AppendFloat(dst []byte, f float, fmt byte, prec, bitSize int) []byte
FormatFloat
에 의해 생성된 부동 소수점 숫자 f
의 문자열 형식을 dst
에 추가하고 확장 버퍼를 리턴한다.
func AppendInt(dst []byte, i int64, base int) []byte
FormatInt
에 의해 생성된 정수 i
의 문자열 형식을 dst
에 추가하고 확정 버퍼를 리턴한다.
func AppendQuote(dst []byte, s string) []byte
Quote
로 생성된 s
를 나타내는 큰 따옴표로 묶인 GO 문자열 리터럴을 dst 에 추가하고 확장 버퍼를 반환한다.
func AppendQuoteRune(dst []byte, r run) []byte
QuoteRune
에 의해 생성된 룬을 나타내는 작은 따옴표로 묶인 GO 문자열을 dst
에 추가하고 확장 버퍼를 리턴한다.
func AppendQuoteRuneToASCII(dst []byte, r rune) []byte
QuoteRuneToASCII
에 의해 생성된 룬을 나타내는 작은 따옴표로 묶인 GO 문자 리터럴을 dst
에 추가하고 확장 버퍼를 리턴한다.
func AppendQuoteRuneToGraphic(dst []byte, r rune) []byte
QuoteRuneToGraphic
에 의해 생성된 룬을 나타내는 작은 따옴표로 묶인 GO 문자 리터럴을 dst
에 추가하고 확장 버퍼를 리턴한다.
func AppendQuoteToASCII(dst []byte, s string) []byte
QuoteToASCII
에 의해 생성된 s
를 나타내는 큰 따옴표로 묶인 GO 문자열 리터럴을 dst
에 추가하고 확장 버퍼를 리턴한다.
func AppendQuoteToGraphic(dst []byte, s string) []byte
QuoteToGraphic
에 의해 생성된 s
를 나타내는 큰 따옴표로 묶인 GO 문자열 리터럴을 dst
에 추가하고 확장 버퍼를 리턴한다.
func AppendUint(dst []byte, i uint64, base int) []byte
FormatUnit
에 의해 생성된 부호없는 정수 i
의 문자열 형식을 dst
에 추가하고 확장 버퍼를 반환한다.
func Atoi(s string) (int, error)
Atoi
는 ParseInt(s, 10, 0)
와 동일하며 int 유형으로 변환된다.
func CanBackquote(s string) bool
CanBackquote
는 문자열 s
가 탭 이외의 제어 문자없이 단일 행 백틱 문자열로 변경되지 않고 표현될 수 있는지 여부를 반환한다.
func FormatBool(b bool) string
b
값에 따라 "true"
또는 "false"
를 반환한다.
func FormatComplex(c complex128, fmt byte, prec, bitSize int) string
복소수 c
를 형식 (a + bi)
의 문자열로 변환한다.
여기서 a
와 b
는 fmt 및 정밀도 prec
형식에 따라 지정된 실수 및 허수 부분이다.
func FormatFloat(f float64, fmt byte, prec, bitSize int) string
fmt 및 정밀도 prec
형식에 따라 부동 소수점 숫자 f
를 문자열로 변환한다.
원본이 bitSize
비트의 부동 소수점 값에서 얻는 것으로 가정하여 반올림한다.
func FormatInt(i int64, base int) string
func FormatUint(i uint64, base int) string
2 <= base <= 36
에 대해 주어진 기수로 i
의 문자열 표현을 반환한다.
결과는 기수에 따라 10 이상의 값은 문자 a ~ z
를 사용한다.
func IsGraphic(r rune) bool
룬이 Unicode 로 그래픽으로 정의되어 있는지 여부를 보고한다.
이런 문자에는 L, M 및 Z 범주의 문자, 마크, 숫자, 문장 부호, 공백, 기호 등이 포함된다.
func IsPrint(r rune) bool
룬이 unicode.IsPrint(문자, 숫자, 기호 및 아스키 공백) 과 동일한 정의로 GO 에서 출력 가능한 것으로 정의된 것인지 여부를 반환한다.
func Itoa(i int) string
FormatInt(int64 (i), 10)
와 동일하다.
func ParseBool(str string) (bool, error)
문자열이 나타내는 부울 값을 반환한다.
1, t, T, TRUE, true, True, 0, f, F, FALSE, false, False 모두 허용한다.
다른 값은 오류를 반환한다.
func ParseComplex(s string, bitSize int) (complex128, error)
문자열 s
를 bitSize
(cimplex64 -> 64, complex128 -> 128) 로 지정된 정밀도로 복소수로 변환한다.
bitSize
가 64인 경우 여전히 complex128 유형이지만 값을 변경하지 않고 complex64로 변환할 수 있다.
func ParseFloat(s string, bitSize int) (float64, error)
bitSize
에 지정된 정밀도(float32 -> 32, float64 -> 64)로 문자열 s
를 부동 소수점 숫자로 변환한다.
bitSize
가 32 인 경우 여전히 float64 유형이지만 값을 변경하지 않고 float32 로 변환할 수 있다.
func ParseInt(s string, base int, bitSize int) (int64, error)
func PraseUnit(s string, base int, bitSize int) (unit64, error)
ParseInt
는 주어진 기본(0, 2 ~ 36) 및 비트 크기 (0 ~ 64)의 문자열 s
를 해석하여 해당 i
를 반환한다.
ParseUnit
도 동일하며 부호없는 숫자로 반환한다.
func Quote(s string) string
func QuoteRune(r rune) string
func QuoteRuneToASCII(r rune) string
func QuoteToGraphic(s string) string
Quote
는 s
를 나타내는 큰 따옴표로 묶인 GO 문자열 리터럴을 반환한다.
반환된 문자열은 제어 문자 및 IsPrint
에 의해 정의된 출력할 수 없는 문자에 GO 이스케이프 시퀀스를 사용한다. (\t, \n, \xFF, \u0100)
QuoteRune
도 동일하며 룬을 나타내는 작은 따옴표 GO 문자 리터럴을 반환한다.
QuoteRuneToASCII
도 룬을 나태는 작은 따옴표 GO 문자 리터럴을 반환하며
IsPrint
에 정의된 대로 ASCII 가 아닌 문자나 인쇄 할 수 없는 문자에 이스케이스를 사용한다.
QuoteToGraphic
은 s
를 나타내는 큰 따옴표로 묶인 GO 문자열 리터럴을 반환하며 IsGraphic
에 정의한 유니코드 그래픽 문자를 변경하지 않고 그대로두고 그래픽이 아닌 문자에 이스케이스를 사용한다.
func Unquote(s string) (string, error)
s
를 작은 따옴표, 큰 따옴표 또는 백틱이 있는 GO 문자열 리터럴로 해석하여 따옴표로 묶은 문자열 값을 반환한다.
func UnquoteChar(s string, quote byte) (rune, bool, string, error)
이스케이프된 문자열 또는 s
로 표시되는 문자 리터럴의 첫 번째 문자 도는 바이트를 디코딩한다.
다음의 네 가지 값을 반환한다.
NumError
구조체는 실패한 변환을 기록한다.
type NumError struct {
Func string // 실패한 함수(ParseBool, ParseInt 등)
Num string // 입력
Err error // 변환에 실패한 이유 (ErrRange, ErrSyntax 등)
}
다음과 같이 이용할 수 있다.
func main() {
str := "Not a number"
if _, err := strconv.ParseFloat(str, 64); err != nil {
e := err.(*strconv.NumError)
fmt.Println("Func:", e.Func)
fmt.Println("Num:", e.Num)
fmt.Println("Err:", e.Err)
fmt.Println(err)
}
}
func (e *NumError) Error() string
func (e *NumError) UnWrap() error
에러를 래핑하거나 언랩하는 함수.