반응형
모든 표준 Go 패키지를 나열 할 수 있습니까?
Go에 모든 표준 / 내장 패키지 (즉, GoLang 설치와 함께 설치된 패키지) 를 나열하는 방법이 있습니까?
패키지 목록이 있고 어떤 패키지가 표준인지 알아 내고 싶습니다.
golang.org/x/tools/go/packages
이것을 위해 새로운 것을 사용할 수 있습니다 . 이것은 대부분의 프로그램 인터페이스를 제공합니다 go list
.
package main
import (
"fmt"
"golang.org/x/tools/go/packages"
)
func main() {
pkgs, err := packages.Load(nil, "std")
if err != nil {
panic(err)
}
fmt.Println(pkgs)
// Output: [archive/tar archive/zip bufio bytes compress/bzip2 ... ]
}
를 얻으려면 isStandardPackage()
다음과 같이 맵에 저장할 수 있습니다.
package main
import (
"fmt"
"golang.org/x/tools/go/packages"
)
var standardPackages = make(map[string]struct{})
func init() {
pkgs, err := packages.Load(nil, "std")
if err != nil {
panic(err)
}
for _, p := range pkgs {
standardPackages[p.PkgPath] = struct{}{}
}
}
func isStandardPackage(pkg string) bool {
_, ok := standardPackages[pkg]
return ok
}
func main() {
fmt.Println(isStandardPackage("fmt")) // true
fmt.Println(isStandardPackage("nope")) // false
}
go list std
표준 패키지를 나열 하려면 명령을 사용하십시오 . 특수 가져 오기 경로 std
는 표준 Go 라이브러리 ( doc ) 의 모든 패키지 로 확장됩니다 .
Go 프로그램에서 목록을 가져 오려면 해당 명령을 실행하십시오.
cmd := exec.Command("go", "list", "std")
p, err := cmd.Output()
if err != nil {
// handle error
}
stdPkgs = strings.Fields(string(p))
간단한 솔루션을 원한다면 패키지가 $ GOROOT / pkg에 있는지 확인할 수 있습니다. 모든 표준 패키지가 여기에 설치됩니다.
참고URL : https://stackoverflow.com/questions/55807322/can-i-list-all-standard-go-packages
반응형
'programing' 카테고리의 다른 글
어설 션 실패 후 NetBeans의 JsTestDriver가 테스트를 중지 함 (0) | 2020.05.25 |
---|---|
완료되지 않은 소스 파일을 제거하지 못하도록 rsync 유지 (0) | 2020.05.25 |
REST Complex / Composite / Nested Resources [폐쇄] (0) | 2020.05.25 |
Android에서 OpenGL-ES 게임을위한 튜토리얼 및 라이브러리 (0) | 2020.05.25 |
정규식의 일부와 일치하지만 캡처하지 않는 방법은 무엇입니까? (0) | 2020.05.24 |