#code #go

Un projet Go peut être une librairie (à importer dans du code), un cli (à exécuter directement) ou une combinaison des deux.

  1. Pour une librairie simple
folder/
  go.mod
  modname.go
  modname_test.go

Note: Il n’y a pas de fonction main dans modname.go. Dans go.mod, il y a la ligne github.com/username/modname et le package dans modname.go est package modname.

  1. Pour un CLI simple
folder/
  go.mod
  main.go
  main_test.go

Il y a une fonction main dans main.go Ce CLI peut être installé avec go install github.com/username/modname@latest

  1. Une librairie contenant des packages internes Pour que des sous-packages ne puissent pas être importés directement par un client, il faut les placer dans un dossier internal
folder/
  internal/
    auth/
      auth.go
    hash/
      hash.go
  modname.go
  go.mod
  1. Un CLI avec plusieurs commandes Dans ce cas, les commandes sont placées dans des dossiers séparés, dans dossier cmd.
folder/
  go.mod
  modname.go
  cmd/
    prog1/
      main.go
    prog2/
      main.go

Les commandes sont installées avec go install gitHub.com/username/modname/cmd/prog1@latest