A Go-ban egy alkalmazás csomagokba szerveződik. Egy csomag az ugyanabban a mappában található forrásfájlok gyűjteménye. Egy mappában minden forrásfájl elején ugyanannak a csomagnévnek kell szerepelnie. A konvenció szerint a csomag neve megegyezik annak a mappának a nevével, amelyben található.
package greeting
A Go csomagok széles körű szabványos könyvtárát kínálja, amelyeket az import kulcsszóval használhatsz a programodban.
A szabványos könyvtár csomagjait a nevükkel importálod.
package greeting
import "fmt"
Több csomagot egyszerre is importálhatsz, ha zárójelbe foglalod őket.
package greeting
import (
"errors"
"fmt"
)
A harmadik féltől származó csomagokat a csomag helyének URL-jével importálod. Importáláskor a csomagnak álnevet is adhatsz. Ezzel elkerülheted a csomagnevek ütközését:
package greeting
import (
"errors"
errs "github.com/pkg/errors"
)
Az importált csomagra ezután a csomagnévvel vagy az álnévvel hivatkozol:
// using the internal errors package
errors.New("Connection not established")
// using the errors package located at github.com/pkg/errors by alias
errs.New("Connection not established")
A Go a deklaráció módja alapján dönti el, hogy egy elemet meghívhat-e más csomagok kódja.
Ahhoz, hogy egy függvény, típus, változó vagy konstans kívülről látható legyen (ezt a Go exported néven ismeri), a nevének nagybetűvel kell kezdődnie.
Ez ahhoz hasonlít, ahogy más programozási nyelvek, például a Java public és private hozzáférésmódosítókat használnak.
package greeting
// Hello is a public function (callable from other packages).
func Hello(name string) string {
return "Hello " + name
}
// hello is a private function (not callable from other packages).
func hello(name string) string {
return "Hello " + name
}
Ugyanez vonatkozik a saját struct típusok mezőneveire is: a nagybetűvel kezdődő mezőnevek kívülről láthatók, a kisbetűvel kezdődők nem.