Y a-t-il un moyen dans Go de lister todo les paquets standard/intégrés (c'est-à-dire les paquets fournis avec une installation de Go) ?
J'ai une liste de paquets et je veux savoir quels sont les paquets standard.
Y a-t-il un moyen dans Go de lister todo les paquets standard/intégrés (c'est-à-dire les paquets fournis avec une installation de Go) ?
J'ai une liste de paquets et je veux savoir quels sont les paquets standard.
Vous pouvez utiliser le nouveau golang.org/x/tools/go/packages
pour cela. Cela fournit une interface programmatique pour la plupart des 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 ... ]
}
Pour obtenir un isStandardPackage()
vous pouvez le stocker dans une carte, comme ceci :
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
}
Immédiatement recherchée, où se trouve ok
d'où je viens et où j'ai trouvé ce bel article. reddit.com/r/golang/comments/35d0b2/about_the_comma_ok_idiom
Utilisez le go list std
pour lister les paquets standards. Le chemin d'importation spécial std
s'étend à tous les paquets de la bibliothèque standard de Go ( doc ).
Exécutez cette commande pour obtenir la liste dans un programme Go :
cmd := exec.Command("go", "list", "std")
p, err := cmd.Output()
if err != nil {
// handle error
}
stdPkgs = strings.Fields(string(p))
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
8 votes
Défaut
Go
paquets golang.org/pkg0 votes
Existe-t-il une fonction comme
isStandardPackage(importPath string) bool
que je peux utiliser ?1 votes
Peut-on l'utiliser ? golang.org/pkg/cmd/go/internal/list ?
0 votes
Je pense que la liste vous montre tous les paquets installés.
0 votes
Que cherchez-vous à obtenir ici ? Une déclaration d'importation sans
.
est soit un paquetage interne à vous, soit une partie de la bibliothèque standard.0 votes
Nous avons essayé d'organiser le code dans Kubernetes. Nous avons besoin d'un moyen facile de déterminer dans l'un des scripts si c'est un paquet standard et s'il peut être ignoré pour l'analyse.