Go에서 객체 유형을 찾는 방법

Suraj Joshi 2023년1월30일 2020년6월14일 Go Go Data Type
  1. Go에서 데이터 유형을 찾기위한 문자열 형식화
  2. type assertions 방법
Go에서 객체 유형을 찾는 방법

데이터 유형은 유효한 Go 변수와 연관된 유형을 지정합니다. Go에는 다음과 같은 네 가지 범주의 데이터 유형이 있습니다.

  • 기본 유형 : 숫자, 문자열 및 부울

  • 집계 유형 : 배열 및 구조체

  • 참조 유형 : 포인터, 슬라이스, 맵, 기능 및 채널

  • 인터페이스 유형

string 서식,reflect 패키지 및type assertions를 사용하여 Go에서 객체의 데이터 유형을 찾을 수 있습니다.

Go에서 데이터 유형을 찾기위한 문자열 형식화

특별한 포맷팅 옵션과 함께 패키지 fmtPrintf 기능을 사용할 수 있습니다. fmt를 사용하여 변수를 표시하는 데 사용할 수있는 형식화 옵션은 다음과 같습니다.

체재 기술
%v 변수 값을 기본 형식으로 인쇄
%+v 값으로 필드 이름 추가
%#v 값의 Go 구문 표현
%T 값의 유형에 대한 Go 구문 표현
%% 문자 퍼센트 부호; 가치가 없다

fmt 패키지의%T 플래그를 사용하여 Go에서 객체 유형을 찾습니다.

package main

import "fmt"

func main() {
    i := 18
    fmt.Printf("Datatype of i : %T\n", i)

    s := "Dixya Lyaho"
    fmt.Printf("Datatype of s : %T\n", s)

    f := 25.32
    fmt.Printf("Datatype of f : %T\n", f)
}       

출력:

Datatype of i : int
Datatype of s : string
Datatype of f : float64

reflect패키지

또한 reflect패키지를 사용하여 객체의 데이터 유형을 찾을 수 있습니다. reflect 패키지의 Typeof 함수 .String()을 사용하여string으로 변환 될 수있는 데이터 유형을 반환합니다.

package main

import (
    "fmt"
    "reflect"
)

func main() {
    o1 := "string"
    o2 := 10
    o3 := 1.2
    o4 := true
    o5 := []string{"foo", "bar", "baz"}
    o6 := map[string]int{"apple": 23, "tomato": 13}

    fmt.Println(reflect.TypeOf(o1).String())
    fmt.Println(reflect.TypeOf(o2).String())
    fmt.Println(reflect.TypeOf(o3).String())
    fmt.Println(reflect.TypeOf(o4).String())
    fmt.Println(reflect.TypeOf(o5).String())
    fmt.Println(reflect.TypeOf(o6).String())

}      

출력:

string
int
float64
bool
[]string
map[string]int

type assertions 방법

형식 어설 션 메서드는 어설 션 작업의 성공 여부를 알려주는 부울 변수를 반환합니다. 우리는 switch유형을 사용하여 객체의 데이터 유형을 찾기 위해 여러 유형의 assertion을 직렬로 수행합니다.

package main

import (
    "fmt"
)

func main() {
    var x interface{} = 3.85
    switch x.(type) {
    case int:
        fmt.Println("x is of type int")
    case float64:
        fmt.Println("x is of type float64")
    default:
        fmt.Println("x is niether int nor float")

    }

}      

출력:

x is of type float64
Author: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn