Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Go
Code

12 nepostrádateľných balíčkov a knižníc napísaných v jazyku Go

by
Difficulty:BeginnerLength:LongLanguages:

Slovak (Slovenčina) translation by Ryan (you can also view the original English article)

Go je úžasný jazyk s vysokým spádom a je zameraný na jednoduchosť. Tento prístup je očividný v každej knižnici, ktorá poskytuje všetky jej základy, ale nič viac.

Našťastie, Go má vibrujúcu komunitu, ktorá vytvára a zdieľa veľké množstvo knižníc tretej strany. V tomto článku si predstavíme 12 najlepších balíčkov a knižníc napísaných v jazyku Go. Niektoré z nich majú pomerne úzky rozsah a môžu byť pridané do každého projektu, zatiaľčo všetky ostatné sú obrovské projekty, ktoré môžete zahrnúť do obrovského distribuovaného systému.

Awesome Go

Predtým, než sa pozrieme na jednotlivé knižnice, chcem vám predstaviť projekt Awesome Go, aktívny zoznam knižníc a iné zdroje ohľadom jazyka Go. Raz za čas by ste ho mali navštíviť, aby ste sa pozreli, čo je nové.

1. golang-set

Go má polia, rezy a mapy, ale nemá dátovú štruktúru pre sadu. Môžete ju napodobniť pomocou mapy booleanov, ale je pekné mať aktuálny dátový typ s pravými operáciami a sémantikou. To je dôvod, prečo golang-set existuje. Tu je základný príklad vytvárania novej sady, pridávania položiek a testovania členstva v sade:

Všimnite si, že názov balíčka je "mapset". Okrem základných vecí môžete vykonávať operácie pre sadu ako je spájanie, zistenie spoločného a rozdielneho. Taktiež môžete iterovať cez hodnoty sady:

2. color

Pokračujme v téme farieb. Keď začneme písať programy pre príkazový riadok, je užitočné mať farby, ktoré zvýrazňujú dôležité správy alebo rozlišujú medzi chybami, úspešnými akciami a upozorneniami.

Balíček color vám pomôže vyfarbiť vaše programy. Používa ANSII escape codes a má podporu pre Windows! Tu je rýchly príklad:

Balíček color podporuje miešanie farieb, nastavenie farby pozadia, štýlov ako je tučné alebo kurzíva a keď zistí, že výstup nepodporuje farby, výstup bude čistý a bez farieb.

Balíček color má ďalšie užitočné vlastnosti. Pokračujte a zistite viac.

3. now

Balíček now je veľmi jednoduchý balíček, ktorý obaľuje štandardný balíček time a dáva dodatočné funkcie pre pohodlnú prácu so súčasným dátumom a časom.

Pomocou tohto balíčka môžete zistiť začiatok tejto minúty alebo dátum najbližšej nedele. Tu je príklad, ako používať "now":

Taktiež môžete rozlúštiť časy alebo použiť vlastný formát (ktorý stále vyžaduje aktualizáciu známych formátov). Typ Now používa time.Time, takže keď chcete používať metódy time.Time, môžete ich používať napriamo v objektoch Now.

4. gen

Nástroj gen vytvára kód za vás—presnejšie, kód, ktorý pozná typy, ktorý chce vyplniť dieru v nepoužívaní šablón alebo generík v jazyku Go.

Pridáte anotácie do vašich typov pomocou špeciálneho komentára a gen vygeneruje zdrojové súbory, ktoré môžete použiť vo vašom projekte. Žiadne kúzla počas behu aplikácie. Pozrime sa na príklad. Tu je typ s anotáciami:

Spustením gen sa vytvorí súbor person_slice.go:

Kód poskytuje metódy podobné knižnici Linq v type PersonSlice. Je jednoduchý k porozumeniu a má dobrú dokumentáciu.

Takto sa používa. V hlavnej funkcii je definovaný PersonSlice. Funkcia age() vyberie vek z objektu štruktu Person. Vygenerovaná funkcia GroupByInt() prijíma funkciu age() a vracia naspäť zoznam ľudí zoskupených podľa veku (34 rokov má iba Jim, zatiaľčo 23 majú obaja Jane a Kyle).

5. gorm

Go je známy svojou sparťanskou architektúrou. Databázové programovanie nie je v ničom iné. Väčšina databázových knižníc v jazyku Go sú nízko úrovňové. Balíček gorm prináša svet objektovo-relačného mapovania do jazyka Go spolu s niekoľkými vlasnosťami:

  • Združenia (má jednu, má množstvo, patrí, množstvo k množstvu, polymorfizmus)
  • Spätné volania (pred/po vytvorení/uložení/aktualizácii/vymazaní/vyhľadaní)
  • Skoré načítanie
  • Transakcie
  • Zloženie hlavného kľúča
  • Tvorba príkazov v jazyku SQL
  • Automatické migrácie
  • Zaznamenávač
  • Podpora pre rozšírenia, píšte rozšírenia založené na spätných volaniach

Ale nemá na starosti všetko. Ak robíte v Pythone, neočakávajte nejaké kúzlo typu SQLAlchemy. Pre viac lepších vecí musíte ísť na nízku úroveň. Toto je príklad, ako používať gorm spolu so sqlite. Všimnite si vloženého štuktu gorm.Model do štruktu Product.

6. goose

Jedna z najdôležitejších úloh počas práce s relačnou databázou je spravovať schému. Úprava schémy v databáze je v niektorých organizáciách považovaná za "strašidelnú". Balík goose vám umožňuje vykonávať zmeny v schéme a ak je potrebné, tak aj migráciách dát. Možete použiť príkazy goose up a goose down. Vážte si svojich dát a uistite sa, že dáta sa nestratia alebo nepoškodia.

Goose funguje tak, že do každej schémy pridá verziu a migračné súbory. Migračné súbory môžu byť príkazy buď v jazyku SQL alebo Go. Tu je príklad migračného súboru v jazyku SQL, ktorý pridá novú tabuľku do databázy:

Komentáre -- +goose up a -- +goose down napovedajú goose, čo má robiť pri inovácii alebo degradácii schémy.

7. glide

Glide je správca balíčkov pre jazyk Go. Pod jedným GOPATH môžete mať množstvo programov s rozporujúcimi závislosťami. Riešením je mať jeden program, ktorý spravuje vlastný priečinok pre závislosti balíčka. Glide vám s tým pomôže.

Tu je niekoľko vlastností balíčka glide:

  • Podporuje verzie balíčkov vrátane Semantic Versioning 2.0.0.
  • Podporuje aliasovanie balíčkov (napr. pri pracovaní s forkami na GitHube)
  • Odstraňuje potrebu pre ťažké príkazy importovania balíčkov.
  • Funguje so všetkými nástrojmi go.
  • Podporuje všetky VCS, ktoré podporuje samotný jazyk Go (git, bzr, hg, svn).
  • Podporuje vlastné lokálne a globálne rozšírenia.
  • Zlepšuje výkon sťahovania pomocou cachovania repozitárov a dát.
  • Vyrovnáva závislosti, zisťuje rozdiely medzi verziami a vyhýba sa viacnásobnému zahrnutiu balíčka.
  • Spravuje a inštaluje závislosti na požiadanie alebo zahrnuté v systéme kontroly verzie.

Závislosti sú uložené v súbore glide.yaml a poskytuje niekoľko príkazov na správu závislostí:

8. ginkgo

Ginkgo je BDD testovací framework. Umožňuje vám písať v syntaxe, ktorý pripomína angličtinu a povoľuje menej technickým ľuďom preskúmať testy (a ich výstup) a overiť si, že či sa testy zhodujú s obchodnými podmienkami.

Niektorí vývojári majú radi tento štýl špecifikácie testov. Je integrovaný do vstavaného testovacieho balíčka jazyka Go a je často skombinovaný s balíčkom gomega. Tu je príklad testu pomocou balíčkov ginkgo a gomega:

9. etcd

Etcd je spoľahlivá distribuovaná databáza modelu kľúč-hodnota. Server je implementovaný v jazyku Go a klient jazyka Go s ním pôsobí pomocou gRPC.

Sústreďuje sa na:

  • Jednoduchosť: dobre definované API (gRPC).
  • Bezpečnosť: automatické TLS s voliteľnou autentifikáciou pomocou klientského certifikátu.
  • Rýchlosť: nameraných 10 000 zápisov/s.
  • Spoľahlivosť: distribuované pomocou Raftu.

Tu je príklad pripojenia sa na server, uloženia hodnoty a jej získania vrátane časového obmedzenia a vyčistenia.

10. NSQ

NSQ je skvelá distribuovaná fronta. Úspešne som ju použil ako hlavnú súčasť počas tvorby obrovských distribuovaných systémov. Tu je zoznam niektorých z jeho funkcií:

  • Podporuje distribuovanú topológiu bez SPOF.
  • Horizontálne škáľovateľná (bez sprostredkovateľov, stačí pridať uzly do zoskupenia).
  • Dodanie správ s nízkou latenciou.
  • Kombinácia smerovania zaťažených a multicast správ.
  • Vyniká v oboch vysoko priepustných a nízko priepustných pracovných zaťaženiach.
  • Prevažne v pamäti (správy sú uložené aj na disku).
  • Služba vyhľadávania producentov pre konzumentov (nsqlookupd).
  • Podporuje Transport layer security (TLS).
  • Nezaujíma sa o formát dát.
  • Pár závislostí (ľahko sa odovzdáva na server) a rozumná a ohraničená konfigurácia.
  • Jednoduchý TCP protokol, ktorý podporuje klientske knižnice v akomkoľvek jazyku.
  • HTTP rozhranie pre štatistiky, akcie pre administrátorov a producentov (bez potreby zverejnenia klientskej knižnice).
  • Má integráciu s statsd pre inštrumentáciu v reálnom čase.
  • Robustné rozhranie pre administráciu zoskupení (nsqadmin).

Tu je kód, ktorý zverejní správu do NSQ (bez chytania chýb):

A tento kód ju konzumuje:

11. Docker

Docker je už také domáce meno (keď vaši členovia rodiny sú DevOps). Možno ste si neboli vedomí, že Docker je implementovaný v jazyku Go. Vo vašom kóde nebudete bežne používať Docker, ale je to významný projekt a zaslúži si byť uznaný ako veľmi úspešný a populárny projekt napísaný v jazyku Go.

12. Kubernetes

Kubernetes je open-source platforma na orchestráciu kontajnerov pre aplikácie vytvorené pre cloud. Je to ďalší obrovský distribuovaný systém implementovaný v jazyku Go. Nedávno som napísal knihu s názvom Mastering Kubernetes, kde detailne vysvetľujem najpokročilejšie aspekty platformy Kubernetes. Od uhla pohľadu vývojára v jazyku Go, Kubernetes je veľmi pružný a môžete ho rozšíriť a upraviť pomocou rozšírení.

Záver

Jazyk Go je skvelý. Jeho filozofiou je byť jednoduchým a prístupným jazykom. Jeho štandardné knižnice nie sú také obsiahle ako v ostatných jazykoch ako je Python.

Komunita jazyka Go urýchlila rast jazyka a existuje mnoho vysoko kvalitných knižníc, ktoré môžete použiť vo vašom programe. V tomto článkom som vám predstavil 12 knižníc. Taktiež by ste sa mohli pozrieť na ostatné knižnice predtým, než začnete vytvárať všetko od základov.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.