Go (programski jezik)
![]() | |
Paradigma | multiparadigmatična: sočasna imperativna, funkcionalna[1] objektno usmirjena[2][3] |
---|---|
Začetna izdaja | 10. november 2009 |
Oblikoval | |
Razvijalec | The Go Authors[5] |
Stabilna izdaja | Upodobitev lastnosti software version identifier je spodletela: Lastnosti software version identifier ni mogoče najti. (single ) |
Tipizacija | sklepalna, statična, močna,[6] struktrualna,[7][8] nominalna |
Večje implementacije | gc, gofrontend |
Vplivi | Upodobitev lastnosti influenced by je spodletela: Lastnosti influenced by ni mogoče najti. |
Vplival na | Crystal, V |
Programski jezik | Go, zbirni jezik (gc); C++ (gofrontend) |
OS | DragonFly BSD, FreeBSD, Linux, macOS, NetBSD, OpenBSD,[9] Plan 9,[10] Solaris, MS Windows |
Licenca | tročlena BSD + podelitev patenta[11] |
Običajna končnica datoteke | .go |
Spletna stran | go |

Go je programski jezik, ki ga je razvil Google leta 2007. Avtorji jezika so Robert Griesemer, Rob Pike in Ken Thompson. Programski jezik se prevede s prevajalnikom, kot npr. C ali C++. Programski jezik ima tudi svoj »garbage collector«, ki poskrbi za čiščenje pomnilnika.[12]
Go je postal javen odprtokodni projekt 10. novembra 2009. Po nekaj letih razvijanja je bila 28. marca 2012 izdana prva stabilna različica, imenovana Go 1.[13] Avtor maskote in logotipa je Renée French. Maskota je pod licenco Creative Commons Attribution 3.0.[14]
Osnovne značilnosti jezika
[uredi | uredi kodo]Go poskuša kombinirati razvoj in hitrost delovanja v dinamičnem programskem jeziku, kakršen je Python, z zmogljivostjo in varnostjo prevajanih jezikov, kot sta C ali C++. Velike datoteke se prevedejo v le nekaj sekundah in prevedena koda se izvaja skoraj tako hitro kot v jeziku C.[15]
Go ni tipičen objektno usmerjen programski jezik. Čeprav dovoljuje objektno usmerjeni slog programiranja, ne pozna hierarhičnih tipov razredov. Koncept vmestnika ima drugačen pristop, ki naj bi bil lahek za uporabo in bolj splošen. Zaradi nehierarhičnosti so objekti veliko bolj vsestranski kot v jezikih, kot je java.[16] Da bi bil jezik bolj preprost, so nekatere komponente (dedovanje razredov, trditve (assertions), generično programiranje) namenoma izključene.[17]
Programska koda jezika Go je sestavljena iz:[17]
- deklaracije in uvoza paketov
- funkcij
- spremenljivk
- izjav in izrazov
- komentarjev
Zgled programa Pozdravljen, svet!
[uredi | uredi kodo]package main
import "fmt"
const pi = 3.14159
const smesko = ":-)"
func main() {
const svet = "世界"
fmt.Println("Pozdravljen,", svet)
fmt.Println("Srečen", "Dan", pi, "!")
const resnica = "Resnično."
fmt.Println("Go raztura, kajne?", resnica, smesko)
}
Zgled programa Fibonaccijeva števila
[uredi | uredi kodo]package main
import "fmt"
// fib vrne funkcijo, ki vrne Fibonnacijeva števila
func fib() func() int {
a, b := 0, 1
return func() int {
a, b = b, a + b
return a
}
}
func main() {
f := fib()
// funkcijski klici se izvršujejo z leve proti desni
fmt.Println(f(), f(), f(), f(), f())
}
Sklici
[uredi | uredi kodo]- ↑ Codewalk: First-Class Functions in Go (v angleščini),
Go podpira prvorazredne funkcije, funkcije višjega reda, uporabniško definirane vrste funkcij, funkcijske literale, zaprtja in večkratne vrnjene vrednosti. Ta bogat nabor funkcij podpira funkcionalni programski slog v strogo tipiziranem jeziku.
- ↑ Is Go an object-oriented language? (v angleščini), pridobljeno 13. aprila 2019,
Čeprav ima Go tipe in metode ter omogoča objektno usmerjeni slog programiranja, ni hierarhije tipov.
- ↑ Go: code that grows with grace (v angleščini), pridobljeno 24. junija 2018,
Go je objektno usmerjen, vendar ne na običajen način.
- ↑ »Language Design FAQ«, The Go Programming Language (v ameriški angleščini), 16. januar 2010, pridobljeno 27. februarja 2010
- ↑ »Text file LICENSE«, The Go Programming Language (v angleščini), pridobljeno 5. oktobra 2012
- ↑ The Go Programming Language Specification - the Go Programming Language (v angleščini)
- ↑ »Why doesn't Go have "implements" declarations?«, The Go Programming Language (v angleščini), pridobljeno 1. oktobra 2015
- ↑ Pike (2014).
- ↑ »lang/go: go-1.4«, OpenBSD ports (v angleščini), 23. december 2014, pridobljeno 19. januarja 2015
- ↑ »Go Porting Efforts«, Go Language Resources (v angleščini), cat-v, 12. januar 2010, pridobljeno 18. januarja 2010
- ↑ »Additional IP Rights Grant«, The Go Programming Language (v angleščini), pridobljeno 5. oktobra 2012
- ↑ The Go Programming Language History (v angleščini), Golang.org, pridobljeno 22. decembra 2015
- ↑ The Go Programming Language What is the status of the project? (v angleščini), Golang.org, pridobljeno 22. decembra 2015
- ↑ The Go Programming Language What is the origin of the mascot? (v angleščini), Golang.org, pridobljeno 22. decembra 2015
- ↑ Google's Go: A New Programming Language That's Python Meets C++ (v angleščini), techcrunch.com, pridobljeno 22. decembra 2015
- ↑ The Go Programming Language Is Go an object-oriented-language (v angleščini), Golang.org, pridobljeno 22. decembra 2015
- ↑ 17,0 17,1 What's the Go language really good for? (v angleščini), javaworld.com, arhivirano iz prvotnega spletišča dne 22. decembra 2015, pridobljeno 22. decembra 2015
Viri
[uredi | uredi kodo]- Pike, Rob (22. december 2014), Rob Pike on Twitter, arhivirano iz prvotnega spletišča dne 7. aprila 2022, pridobljeno 13. marca 2016,
Go has structural typing, not duck typing. Full interface satisfaction is checked and required.