int) ↔ 문자열(string)int를 string으로strconv.Itoa 사용strconv 패키지에서 제공하는 Itoa 함수를 이용하여 변환num := 123
str := strconv.Itoa(num)
fmt.Sprintf 사용fmt 패키지에서 제공하는 Sprintf 함수를 이용해 포맷팅된 문자열로 변환num := 123
str := fmt.Sprintf("%d", num)
int뿐 아니라 다양한 데이터 타입을 문자열로 변환할 때 유연하게 사용할 수 있다.
strconv.FormatInt 사용int64를 문자열로 변환할 때 사용하고, 큰 정수나 다른 진법으로 변환할 때 유용하다.num := int64(123)
str := strconv.FormatInt(num, 10)
string을 int로strconv.Atoi 사용strconv 패키지에서 제공하는 Atoi 함수를 이용하여 변환str := "123"
num, err := strconv.Atoi(str)
strconv.ParseInt 사용str := "123"
num, err := strconv.ParseInt(str, 10, 0)
num64, err := strconv.ParseInt(str, 10, 64)
// 세 번째 인자는 결과값의 비트 크기이고, `0`을 넣으면 기본 크기인 `int`로 변환된다.
int) ↔ 부동소수점(float64)int를 float64로iNum := 123
fNum := float64(iNum)
float64를 int로fNum := 12.3
iNum := int(fNum)
주의사항
- 소수점 이하의 값은 버려진다(내림 처리).
int범위를 초과하는 큰float64값을int로 변환하면 예상치 못한 값이 나올 수 있다;
stringstring을 []byte로str := "hello there!"
byteStream := []byte(str)
각 문자는 아스키 코드나 UTF-8 코드 포인트에 해당하는 바이트 값으로 변환된다.
[]byte를 string으로byteStream := []byte{72, 101, 108, 108, 111}
str := string(byteStream) // 직관적이고 간결한 변환
str := string(byteStream[:]) // 슬라이스 표현식을 사용
time 패키지 사용timestamp := int64(1231231234)
t := time.Unix(timestamp, 0).UTC().Format(time.RFC3339)
fmt.Println(t) // 2009-01-06T08:40:34Z
t := time.Unix(timestamp, 0).Format(time.RFC3339)
fmt.Println(t) // 2009-01-06T17:40:34+09:00
time 패키지 사용rfcTime := "2009-01-06T08:40:34Z"
t, err := time.Parse(time.RFC3339, rfcTime) // time.Time 객체로 변환
if err != nil {
// 에러 처리 ...
}
timestamp := t.Unix()