[go] go/types 패키지로 가능한 타입 검사 예시들
go/types
패키지는 Go 프로그램의 타입 정보를 다루고 이를 검사할 수 있는 기능을 제공합니다. 이번 블로그에서는 go/types
패키지를 사용해서 가능한 타입 검사 예시들에 대해 소개하겠습니다.
1. 타입이 동일한지 확인하기
package main
import (
"fmt"
"go/types"
)
func main() {
var a int
var b int32
fmt.Println(types.Identical(a, b)) // false
}
위 예제에서는 Identical
함수를 사용하여 int
와 int32
가 동일한 타입인지 확인합니다. false
가 출력되므로 두 타입은 서로 다른 것으로 판단됩니다.
2. 타입의 구체성 검사하기
package main
import (
"fmt"
"go/types"
)
func main() {
var a interface{}
var b string
fmt.Println(types.AssignableTo(b, a)) // true
}
위 코드에서는 AssignableTo
함수를 사용하여 string
타입이 interface{}
타입에 할당 가능한지 검사합니다. true
가 출력되어 string
타입이 interface{}
타입에 할당 가능하다고 판단됩니다.
3. 타입의 호환성 검사하기
package main
import (
"fmt"
"go/types"
)
func main() {
var a chan int
var b chan bool
fmt.Println(types.Compatible(a, b)) // false
}
위 코드에서는 Compatible
함수를 사용하여 chan int
와 chan bool
이 호환 가능한지를 검사합니다. false
가 출력되므로 두 타입이 호환되지 않는 것으로 판단됩니다.
go/types
패키지를 사용하면 타입 정보를 쉽게 다루고 검사할 수 있습니다. 내부적으로 Go 프로그램의 타입 시스템에 대해 더 깊이 이해하고자 하는 경우에 유용하게 사용할 수 있습니다.
더 많은 정보 및 예제는 Go 공식 문서를 참고할 수 있습니다.