[golang] 타입 스위치(type switch)로 interface{} 값 처리하기

2024. 11. 25. 18:16·Language/Go

서론

Go 언어에서 interface{} 타입은 모든 타입을 담을 수 있어 매우 유연하게 사용된다. 그러나 interface{}에 담긴 값의 원래 타입을 알아내고 처리할 때는 주의가 필요하다. 잘못된 타입 변환 시 panic이 발생할 수 있기 때문에 안전하게 타입을 다루는 방법이 중요하다. Go 언어에서 interface{} 타입의 값을 다룰 때 타입 스위치(type switch)를 사용하면 다양한 타입을 안전하게 처리할 수 있다. 타입 스위치는 값이 어떤 타입인지를 확인하고 각 타입에 맞는 처리를 할 수 있게 도와준다.

 

타입 스위치 예제

package main

import "fmt"

func do(i interface{}) {
    switch v := i.(type) {
    case int:
        fmt.Printf("Type is int: %d * 2 = %d\n", v, v*2)
    case string:
        fmt.Printf("Type is string: %s (%d)\n", v, len(v))
    default:
        fmt.Printf("Unknown type: %T\n", v)
    }
}

func main() {
    do(1024)
    do("Jae-Sung")
    do(true)
}

출력 결과

Type is int: 1024 * 2 = 2048
Type is string: Jae-Sung (8)
Unknown type: bool

 

이 예제에서 do 함수는 interface{} 타입의 값을 매개변수로 받는다. 그 후 타입 스위치를 사용하여 값의 타입에 맞는 처리를 한다.

  1. interface{} 값이 int 타입인 경우: v는 int 타입으로 선언되어 v*2와 같은 연산이 가능하다.
  2. interface{} 값이 string 타입인 경우: v는 string 타입으로 선언되어 문자열 길이를 구하는 등의 처리가 가능하다.
  3. interface{} 값이 int나 string이 아닌 타입인 경우: v는 interface{} 타입으로 선언된다.

타입 스위치를 사용하면 다양한 타입을 안전하게 처리할 수 있으며 예상치 못한 타입에 대해서도 처리할 수 있다.

'Language > Go' 카테고리의 다른 글

[golang] fasthttp! 속도를 뒤집어 놓으셨다  (1) 2024.11.26
[golang] panic 없이 interface{} 타입 변환하기  (0) 2024.11.24
[golang] Base64 인코딩과 디코딩 처리하기  (0) 2024.11.23
[golang] 런타임에 콜 스택 출력하기  (1) 2024.11.22
[golang] panic과 recover로 try-catch 따라 하기  (1) 2024.11.21
'Language/Go' 카테고리의 다른 글
  • [golang] fasthttp! 속도를 뒤집어 놓으셨다
  • [golang] panic 없이 interface{} 타입 변환하기
  • [golang] Base64 인코딩과 디코딩 처리하기
  • [golang] 런타임에 콜 스택 출력하기
在晟
在晟
  • 在晟
    Jae-Sung
    在晟
  • 전체
    오늘
    어제
    • 분류 전체보기 (25)
      • Language (23)
        • Go (23)
      • DBMS (1)
        • MariaDB (1)
      • Notes (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Jae-Sung
    • GitHub
  • 인기 글

  • 태그

    Runtime
    interface{}
    unsafe
    오블완
    go
    filepath
    recover
    티스토리챌린지
    http
    fasthttp
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
在晟
[golang] 타입 스위치(type switch)로 interface{} 값 처리하기
상단으로

티스토리툴바