Go Academy · 강의

Go의 타입 변환

명시적 변환, 타입 별칭 및 정의된 타입

레슨 4/412개 단계

Go의 타입 변환은(는) CoddyKit의 무료 Go Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Go Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

명시적 변환이 필요한 이유

Go는 타입 사이를 절대 암묵적으로 변환하지 않습니다. 이를 통해 정수가 조용히 오버플로되거나 부동 소수점 값의 정밀도가 손실되는 미묘한 버그를 방지합니다.

  • 변환은 명시적으로 작성해야 합니다: T(value)
  • 컴파일러가 컴파일 시점에 타입 불일치를 감지합니다
  • 이렇게 하면 Go 코드가 예측 가능하고 안전해집니다

숫자 변환

대상 타입을 함수 호출처럼 사용하여 숫자 타입 사이를 변환합니다:

package main

func main() {
    var i int = 42
    var f float64 = float64(i)
    var u uint = uint(f)
    _ = u
}

절단 위험

더 큰 타입에서 더 작은 타입으로 변환하면 값이 절단됩니다. 오류가 발생하지 않으므로 주의해야 합니다:

package main

func main() {
    big := int64(300)
    small := int8(big) // 300 % 256 = 44 — silent truncation!
    _ = small
}

string과 []byte 변환

string과 []byte 사이를 변환하면 데이터가 복사됩니다:

package main

func main() {
    s := "hello"
    b := []byte(s)   // string to byte slice
    b[0] = 'H'
    s2 := string(b)  // byte slice to string
    _ = s2
}

string과 []rune

유니코드에 안전한 문자 조작을 하려면 []rune으로 변환합니다:

package main

func main() {
    s := "Merhaba"
    runes := []rune(s)
    _ = len(runes) // character count, not byte count
}

strconv 패키지

문자열과 숫자 사이를 변환할 때는 strconv 패키지를 사용합니다:

import "strconv"

func main() {
    n, err := strconv.Atoi("42")   // string -> int
    s := strconv.Itoa(123)          // int -> string
    _ = n; _ = err; _ = s
}

strconv.ParseFloat와 FormatFloat

부동 소수점 문자열을 안전하게 파싱하고 형식을 지정합니다:

import "strconv"

func main() {
    f, err := strconv.ParseFloat("3.14", 64)
    if err != nil { return }
    s := strconv.FormatFloat(f, 'f', 2, 64) // "3.14"
    _ = s
}

타입 별칭과 정의된 타입

Go는 타입 별칭과 정의된 타입을 구분합니다:

  • type Celsius float64 — 새로운 정의된 타입이며 float64와 명시적으로 변환해야 합니다
  • type Celsius = float64 — 별칭이며 float64와 서로 바꿔 사용할 수 있습니다

정의된 타입 예시

정의된 타입은 API를 더 명확하게 만들고 실수로 타입을 섞는 일을 방지합니다:

type Celsius float64
type Fahrenheit float64

func CtoF(c Celsius) Fahrenheit {
    return Fahrenheit(c*9/5 + 32)
}

func main() {
    boiling := Celsius(100)
    _ = CtoF(boiling)
}

인터페이스 변환

어떤 값이든 해당 값이 충족하는 인터페이스 타입으로 변환할 수 있습니다. 원래 타입으로 되돌리려면 타입 단언이 필요합니다:

var i interface{} = "hello"
s, ok := i.(string) // type assertion
if ok {
    _ = s // safe to use
}

빠른 확인

Go에서 문자열을 int로 변환하는 함수는 무엇입니까?

복습: 타입 변환

Go의 타입 변환에서 기억할 핵심 내용입니다:

  • Go는 암시적으로 변환하지 않습니다. T(value) 구문을 사용해야 합니다
  • 숫자 변환에서는 값이 잘릴 수 있으므로 위험을 명시적으로 고려해야 합니다
  • []byte(s)와 string(b)는 데이터를 복사합니다
  • 문자열과 숫자를 변환할 때는 strconv.Atoi / strconv.Itoa를 사용합니다
  • 정의된 타입에는 명시적 변환이 필요하지만 별칭에는 필요하지 않습니다

다음 과정: if, for, switch를 사용한 제어 흐름입니다.

무료로 시작

AI 튜터와 함께 Go을(를) 배우세요 — 무료

브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.

코스
51
레슨
203

자주 묻는 질문

“Go의 타입 변환” 강의는 무료인가요?

네 — “Go의 타입 변환” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Go Academy 강의 전체를 잠금 해제할 수 있습니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“Go의 타입 변환”에서 뭘 배우나요?

명시적 변환, 타입 별칭 및 정의된 타입 브라우저에서 직접 실행하는 실습 코드로 Go Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Go Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Go Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“Go의 타입 변환” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Go Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Go Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. Go에서 변수 선언
  2. Go의 기본 제공 타입
  3. 상수와 iota
  4. Go의 타입 변환
← Go Academy(으)로 돌아가기