over 1 year ago

Globálne packages

Na rozdiel napríklad od Javy, je v Golangu názov package naozaj cestou kde ho nájdete na internete. Napríklad package github.com/olekukonko/tablewriter zapíšte ako

import "github.com/olekukonko/tablewriter"

V Jave sa používa podobný princíp pri definovaní názvov, ale jedná sa len o konvenciu. V Go ma hlbší význam. Takto definovaný package si nainštalujte jednoduchým príkazom

go get github.com/olekukonko/tablewriter

Alebo môžete dať iba go get a nainštalujete si všetky knižnice použité v projekte. Takto môžete organizovať aj zdrojové kódy v rámci organizácie.

Celé toto riešenie do veľkej miery nahradí potrebu Mavenu v Go.

Duplicitný názov package

Autori Go odporúčajú aby názov package bol čo najvhodnejší. A to aj v situácii, že by ste mali v projekte rovnaké názvy. Aj priamo v systémových knižniciach sú napríklad dva packages s názvami rand. Go má jednoduchý spôsob ako to používať.

package main

import (
    r "crypto/rand"
    "fmt"
    "math/big"
    "math/rand"
)

func main() {
    fmt.Println(rand.Intn(1000))
    max := *big.NewInt(1000)
    n, _ := r.Int(r.Reader, &max)
    fmt.Println(n)
}

Zacyklený import

Jazyk Go núti programátorov programovať čisto. Jedná z vecí je, že ak v package A importujete package B, v package B importujete package C, v package C importujete package D tak v package D sa vám nepodarí naimportovať package A.

To je vec, kvôli ktorej musíte v Jave použiť Maven a aj tak to riešenie nie je tak dôsledné ako v Go.

Toto je podľa mňa tá najúžasnejšia vlastnosť na celom Go pri práci na väčších projektoch. Musíte si celú aplikáciu poctivo rozdeliť na nezávislé moduly a ste vlastne donútení pracovať tak ako sa má.

Zbytočný import

Tento program je v poriadku:

package main

import (
    "fmt"
    "math/rand"
)

func main() {
    fmt.Println("Náhodné číslo")
    fmt.Println(rand.Intn(1000))
}

A tento ani neskompilujete:

package main

import (
    "fmt"
    "math/rand"
)

func main() {
    fmt.Println("Náhodné číslo")
    //fmt.Println(rand.Intn(1000))

}

Chyba: - imported and not used: "math/rand"

← Posielanie mailu Upload dokumentov z Wordu →
 
comments powered by Disqus