MySQL Java JavaScript PHP Python HTML-CSS C-sharp C++ Go

Pachete și module

Pachete și importul acestora

Întregul cod în limbajul Go este organizat în pachete. Pachetele oferă o metodă convenabilă de a separa codul în părți sau module distincte. Modularitatea permite definirea o singură dată a unui pachet cu funcționalitatea necesară și apoi reutilizarea acestuia în diverse programe.

Codul unui pachet este plasat într-unul sau mai multe fișiere cu extensia .go. Pentru a defini un pachet, se utilizează cuvântul cheie package. De exemplu:

package main
import "fmt"
 
func main() {
     
    fmt.Println("Hello Go")
}

În acest caz, pachetul se numește main. Definirea pachetului trebuie să fie plasată la începutul fișierului.

Există două tipuri de pachete: executabile (executable) și biblioteci reutilizabile (reusable). Pentru a crea fișiere executabile, pachetul trebuie să aibă numele main. Toate celelalte pachete nu sunt executabile. În plus, pachetul main trebuie să conțină funcția main, care reprezintă punctul de intrare în aplicație.

Importul pachetelor

Dacă există deja pachete gata făcute cu funcționalitatea de care avem nevoie și dorim să le folosim, atunci le putem importa în program cu ajutorul instrucțiunii import. De exemplu, în exemplul de mai sus este utilizată funcționalitatea de afișare a unui mesaj în consolă prin funcția Println, care este definită în pachetul fmt. Prin urmare, pentru a folosi această funcție, este necesar să importăm pachetul fmt:

import "fmt"

Adesea, programele importă mai multe pachete externe simultan. În acest caz, fiecare pachet poate fi importat secvențial astfel:

package main
import "fmt"
import "math"
 
func main() {
     
    fmt.Println(math.Sqrt(16))  // 4
}

În acest caz este conectat pachetul încorporat math, care conține funcția Sqrt(), ce returnează rădăcina pătrată a unui număr.

Alternativ, pentru a simplifica definirea importului mai multor pachete, acestea pot fi incluse între paranteze astfel:

package main
import (
    "fmt"
    "math"
)
 
func main() {
     
    fmt.Println(math.Sqrt(16))
}

În acest mod putem importa atât pachete încorporate, cât și pachetele proprii. Lista completă a pachetelor încorporate în Go poate fi găsită la adresa: https://golang.org/pkg/.

Pachet format din mai multe fișiere

Un pachet poate fi format din mai multe fișiere. De exemplu, să definim în folder două fișiere:

În fișierul factorial.go vom defini o funcție pentru calculul factorialului:

package main
 
func factorial(n int) int {
     
    var result = 1
    for i:=1; i <= n; i++{
        result *= i
    }
    return result
}

Acest fișier aparține pachetului main.

În fișierul main.go vom folosi funcția pentru calculul factorialului astfel:

package main
import "fmt"
 
func main() {
     
    fmt.Println(factorial(4))
    fmt.Println(factorial(5))
}

Acest fișier aparține, de asemenea, pachetului main. Numărul fișierelor poate fi chiar mai mare.

Acum vom compila programul din aceste fișiere. Pentru aceasta, deschidem consola, navigăm către folderul proiectului și executăm comanda:

go build -o main.exe factorial.go main.go

Indicatorul -o specifică numele fișierului de ieșire – în acest caz, main.exe. Apoi urmează toate fișierele sursă care trebuie compilate. După executarea acestei comenzi, va fi creat fișierul main.exe, pe care îl putem rula în consolă astfel:

Mai exact cu comanda .\main.exe daca suntem in consola de la visual studio code, sau main.exe daca suntem in consola cmd de la windwos.

Fișiere în pachete diferite

Acum să analizăm o altă situație, în care fișierele programului nostru sunt împărțite în pachete diferite. Vom crea în folderul proiectului un subfolder numit computation. Apoi, în folderul computation, vom adăuga fișierul factorial.go cu următorul conținut:

package computation
 
func Factorial(n int) int {
     
    var result = 1
    for i:=1; i <= n; i++{
        result *= i
    }
    return result
}

Codul fișierului factorial.go aparține pachetului computation. Este important de menționat că numele funcției începe cu literă mare. Datorită acestui fapt, funcția va fi vizibilă și accesibilă din alte pachete.

Dupa trebuie de inițializat modulul, scrim în consolă

go mod init proiect

Și se va genera un fișier care va confirma că modului s-a inițializat

După pentru a ne verifica putem iarăși s-a rulam run main.go și totul va merge perfect!