import în Go

Aduce în fișier pachete din biblioteca standard sau din alte module; numele pachetului devine prefixul folosit.

Sintaxă
import "fmt"

import (
    "fmt"
    str "strings"           // alias
    _ "image/png"            // doar pentru efectul init
    "github.com/autor/pachet"
)

Ce face import

import stă după package și înaintea restului codului. Primește calea pachetului între ghilimele: "fmt", "net/http" sau "github.com/autor/proiect/pachet". După import folosești elementele exportate cu prefixul pachetului (ultima parte a căii): http.Get, strings.ToUpper.

Un import nefolosit este eroare de compilare ("os" imported and not used). Editoarele cu goimports adaugă și șterg automat importurile. Poți da un alt nume pachetului (str "strings"), iar _ importă pachetul doar pentru funcțiile lui init (de exemplu drivere de baze de date). . importă numele direct, fără prefix, dar este descurajat.

Pachetele din alte module se adaugă în go.mod cu go get sau automat cu go mod tidy. Importurile circulare (A importă B, B importă A) nu sunt permise.

Exemple

Exemplul 1: Import grupat și alias

package main

import (
    "fmt"
    "math"
    str "strings"
)

func main() {
    fmt.Println(str.ToUpper("brașov"))
    fmt.Printf("rădăcina lui 2: %.4f\n", math.Sqrt(2))
}

Rezultat

BRAȘOV
rădăcina lui 2: 1.4142

Exemplul 2: Pachete cu cale compusă

Prefixul este ultima parte a căii: utf8, rand.

package main

import (
    "fmt"
    "math/rand/v2"
    "unicode/utf8"
)

func main() {
    oras := "Timișoara"
    fmt.Println("octeți:", len(oras), "litere:", utf8.RuneCountInString(oras))
    r := rand.New(rand.NewPCG(1, 2)) // seed fix: același rezultat la fiecare rulare
    fmt.Println("zar:", r.IntN(6)+1)
}

Rezultat

octeți: 10 litere: 9
zar: 5

Greșeli frecvente

  • Import nefolosit: "os" imported and not used. Șterge-l sau folosește _ temporar.
  • Folosirea căii complete ca prefix (math/rand.IntN): prefixul este doar rand.
  • Pachet extern importat fără să fie în go.mod: no required module provides package .... Rulează go get sau go mod tidy.

Comenzi înrudite

  • package și pachetul main: Fiecare fișier Go începe cu package; pachetul main cu funcția main() devine un program executabil.
  • module și pachete: Un pachet este un director cu fișiere .go; un modul (go.mod) este un proiect cu mai multe pachete și dependențele lor.
  • go get: Adaugă, actualizează sau elimină dependențe în go.mod; descarcă modulele necesare.
  • go mod tidy: Aduce go.mod și go.sum în acord cu importurile din cod: adaugă dependențele lipsă și le șterge pe cele nefolosite.
  • vizibilitate (exportat/neexportat): Numele care încep cu literă mare sunt vizibile din alte pachete; cele cu literă mică rămân private pachetului.