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

  1. Go에서 데이터 유형을 찾기위한 문자열 형식화
  2. type assertions 방법

데이터 유형은 유효한 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