[go] go/types 패키지를 사용한 코드 예시
Go 언어의 go/types
패키지는 Go 소스 코드의 타입 정보를 분석하고 검색할 수 있는 기능을 제공합니다. 이 패키지를 사용하면 소스 코드에 있는 식별자(identifier)의 타입 정보를 손쉽게 가져올 수 있습니다.
다음은 go/types
패키지를 사용하여 소스 코드 내의 함수의 반환 타입을 가져오는 간단한 예시 코드입니다.
package main
import (
"fmt"
"go/types"
"go/importer"
"go/parser"
"go/token"
)
func main() {
src := `
package main
func add(a, b int) int {
return a + b
}
`
fset := token.NewFileSet()
f, err := parser.ParseFile(fset, "src.go", src, 0)
if err != nil {
fmt.Println(err)
return
}
conf := types.Config{Importer: importer.Default()}
_, err = conf.Check("cmd/hello", fset, []*types.Package{f.Name}, nil)
if err != nil {
fmt.Println(err)
return
}
obj := f.Scope.Lookup("add")
if obj == nil {
fmt.Println("function not found")
return
}
fmt.Println(obj.Type().(*types.Signature).Results().At(0).Type())
}
위 코드를 실행하면 add
함수의 반환 타입을 출력하여 확인할 수 있습니다. 위 코드는 go/types
패키지를 이용하여 간단하게 Go 소스 코드의 함수 타입 정보를 가져오는 방법을 보여줍니다.
더 많은 go/types
패키지의 기능과 활용 방법에 대한 정보는 공식 Go언어 웹사이트 Go 언어 사이트에서 확인할 수 있습니다.