Go (lavar programmiñ) : diforc'h etre ar stummoù

Endalc’h diverket Danvez ouzhpennet
Dizober kemmoù 1840948 a-berzh Turkmen (kaozeal)
Tikedenn : Dizober
D Kemmoù 2001:41D0:604:1CB:0:0:0:0 (Kaozeal) distaolet; adlakaet da stumm diwezhañ Turkmen
Linenn 1:
'''Go''' zo ur [[yezh programmiñ]] savet gant ijinourien [[Google]]. Simpl eo, gant nebeud a c’herioù miret, ha lakaat a ra aes an implij eus ''coroutines'', anvet ''goroutines'' e Go, isprogrammoù a c’hell labourat e memes tro ma’z eus meur a vikroprosesor, pe un hini liesgalon, en urzhiataer.
'''Go''' zo ul [[yezh programmiñ|lañgaj iñformatikel]] savet gant ijinourien [[Google]]. Simpl eo, gant nebeud a c’herioù miret, ha lakaat a ra aes an implij eus ''coroutines'', anvet ''goroutines'' e Go, isprogrammoù a c’hell labourat e memes tro ma’z eus meur a vikroprosesor, pe un hini liesgalon, en urzhiataer. == War-dro Go == === Anv === Anv al lañgaj a zo '''Go'''. Pa ne c’heller ket ober gant ar ger '''go''' e vez implijet '''golang''' en e lec’h<ref>[https://golang.org/doc/faq#go_or_golang Go FAQ — Go or Golang?]</ref>. === Istor === Kroget o deus Robert Griesemer, Rob Pike ha [[Ken Thompson]] krouiñ Go e miz Gwengolo 2007, ha deuet eo Ian Taylor ha Russ Cox da labourat ganto e 2008. Roet eo bet da c’houzout d’an holl e miz Du 2009<ref name=history>[https://golang.org/doc/faq#history Go FAQ — What is the history of the project?]</ref>. O fal a oa sevel ul lañgaj a brogamasion nevez, simploc’h evit ar re a oa implijet peurliesañ er mare-se (C, C++, Java…), hag e vije aes ganti ober gant mikroprosesorioù liesgalon<ref>[https://golang.org/doc/faq#What_is_the_purpose_of_the_project Go FAQ — What is the purpose of the project?]</ref>. Degaset e vez div zoare Go pep bloaz, unan e miz C’hwevrer hag unan e miz Eost abaoe Go 1.5<ref>[https://golang.org/doc/devel/release.html Release history]</ref>. Abaoe Go 1 e rank pep doare bezañ kendere war-grec’h<ref>[https://golang.org/doc/go1compat Go 1 and the Future of Go Programs]</ref>. === Gopher === [[File:Gogophercolor.png|thumb|[[Razh-godell|Gopher]], arouez Go.]] Arouez Go eo ur [[razh-godell]] (''gopher'' e saozneg) treset gant Renée French<ref>[https://blog.golang.org/gopher The Go Gopher — The Go Blog]</ref>. Graet e vez implijerien Go ''gophers'' ivez<ref name=history />. == Al lavar == === Anvioù disklaeriet === Gallout a reer reiñ anvioù da bep tra gant arouezioù [[Unicode]], da lavarout eo, implijout lizherennoù evel '''ñ''' pe '''ù''' e anvioù ar variantennoù<ref>https://golang.org/doc/faq#unicode_identifiers</ref>. === Memor === Kempennet e vez ar memor gant ur [[skuber-dilerc’hoù]], un isprogram a glask pep tamm memor a zo bet merket evel implijet met n’eo ket ken. Neuze, n’eo ket ar programmer a rank diverkañ an tammoù memor pa n’eus ket ezhomm anezho ken, pezh a gemer kalz amzer d’ar brogrammerien hag a zo kaoz kalz fazioù e programmoù skrivet e lañgajoù ha na reont ket gant ur skuber-dilerc'hoù<ref>[https://golang.org/doc/faq#garbage_collection Go FAQ — Why do garbage collection? Won't it be too expensive?]</ref>. === Tiperezh === Strizh eo reolennoù tipañ Go. Rankout a ra pep variantenn bezañ disklêriet gant e zip, ha ne vez ket treuztipet ar variantennoù nemet pa vez goulennet gant ar programmer. Daoust m’eo Go ul lañgaj programmiñ oriañtet objed, n’eus klasoù ebet, e kontrol da lañgajoù evel C++ pe Java, met gallout a reer stagañ metodoù ouzh pep tip. Gallout a reer krouiñ etrefasioù, met ne zisklêrier ket o implij (n’eus ger miret par da '''implements''' ebet)<ref>[https://golang.org/doc/faq#types Go FAQ — Types]</ref>. === Dastumadoù ha for range === Tipoù ispicial zo e Go evit ober gant dastumadoù: tailhennoù (''slices'') ha tablennoù asosiativel (''maps''). Un dailhenn eo un daolenn a c’hell kreskiñ hep harz nemet memor an urzhiataer, e kontrol d’an taolennoù e kaver e meur a lañgaj programmiñ all. Taolennoù normal zo e Go ivez, da vezañ implijet pa ouzer pet roadenn a vo enni. Gant an daou seurt a dip-mañ e c’heller implijout an tro '''for range''' evit ober un dra bennak gant pep roadenn. Da skouer, setu penaos krouiñ an dailhenn, lakaat an niverennoù etre 3 ha 6 enni, ha diskwel pep niverenn ([https://play.golang.org/p/02LG1QUQlQO gwelout er poull-traezh]). <syntaxhighlight lang="Go"> var niverennoù []int for niverenn := 3; niverenn < 7; niverenn++ { niverennoù = append(niverennoù, niverenn) } for i, n := range niverennoù { fmt.Printf("%d: %d\n", i, n) } </syntaxhighlight> === Goroutines === ''Goroutines'' zo isprogrammoù a c’hell labourat e memes tro. Par int da [[:en:Green_threads|neudelloù gwer]], da lavarout eo, prosesusoù skañv krouet gant sikour ar sistem a egzploatasion ha meret gant levraoueg peurgas Go. Lañset e vez ur goroutine evel ma c’halver ur fonksion, nemet gant ar ger miret '''go''' en a-raok<ref>[https://tour.golang.org/concurrency/1 A Tour of Go — Goroutines]</ref>. === Kanolioù === Gant ''kanolioù'' e c’haser roadennoù a c’hell bezañ resevet gant prosesusoù all<ref>[https://tour.golang.org/concurrency/2 A Tour of Go — Channels]</ref>. Neuze e c’hell meur a c’horoutine treuzkas kannadoù kenetrezo en un doare aesoc’h evit an doareoù kavet el lodenn vrasañ eus al lañgajoù a brogramasion all. === Boñjourañ e Go === Sed amañ ur program a lavar bonjour da tout an dud e Go ([https://play.golang.org/p/psxLadrE-W- gwelout anezhañ er poull-traezh]): <syntaxhighlight lang="Go"> package main import ( "fmt" ) func main() { fmt.Println("Boñjour da tout an dud !") } </syntaxhighlight> == Oustilhoù == === Kompiler === Abaoe doare 1.5 eo kompiler ofisiel Go skrivet e Go<ref>[https://golang.org/doc/faq#What_compiler_technology_is_used_to_build_the_compilers Go FAQ — What compiler technology is used to build the compilers?]</ref>. Kompilerioù all zo: gccgo, diazezet war [[GCC]]; gollmv, diazezet war [[LLVM]]; TinyGo<ref>[https://github.com/tinygo-org/tinygo TinyGo]</ref>, evit ar sistemoù ambarket. Strizh-kenañ eo kompiler Go. Da skouer, disklêriañ ur variantenn hep implijout anezhi zo ur fazi a lak ar c’hompiler da nac’hañ kompilañ ar program. A-ratozh-kaer eo evit klask lakaat diaesoc’h ober fazioù e programmoù Go<ref>[https://golang.org/doc/faq#unused_variables_and_imports Go FAQ — Can I stop these complaints about my unused variable/import?]</ref>. Gallout a ra ar c’hompiler ofisiel produiñ fichieoù binarel da beurgas evit meur a sistem a egzploatasion : [[Linux]], [[Microsoft Windows|Windows]], [[Darwin(kraoñell)|Darwin]] (kraoñell [[Mac OS X]]), [[FreeBSD]] ha sistemoù [[Unix]] all<ref>[https://golang.org/doc/install/source#environment Optional environment variables]</ref>. === Lodennoù === Abaoe Go 1.11 e c’heller sevel tammoù kod, anvet ''modules'' (moduloù), da vezañ implijet e programmoù all<ref>[https://blog.golang.org/using-go-modules Using Go Modules — The Go Blog]</ref>. Disklaeriet e vez doare pep modul er fichie '''go.mod''', a c’hell bezañ produet gant ar c’hompiler. Pa vez kompilet ur program e vez pellkarget ar moduloù diwar ar genrouedad ma ’z eus ezhomm. === Furmader === Gant '''gofmt''' e c’heller feurmatañ ur restr Go, da lavarout eo, lakaat anezhi en ur stumm standard hep cheñch ster ar program<ref>[https://golang.org/cmd/gofmt/ gofmt]</ref>. A-drugarez d’e reolennoù strizh, e kontrol d’al lodenn vrasañ eus al lañgajoù a brogramasion all, n’eus ket da dabutal diwar-benn stumm ar c’hod. === Testoù unanel === E touesk ar binvioù standard e kaver '''go test''', a bourchas pep tra evit ober testoù unanel<ref>[https://golang.org/pkg/testing/ Testing]</ref>. Gallout a ra '''go tost''' peurgas an holl testoù ha diskouez ar feur goloadurezh. Tu zo ivez ober bankoù test evit muzuliañ barregezh an isprogrammoù. === Teuliadur === Gallout a reer skrivañ notennoù ispisial e kod ar program, da vezañ tretet gant '''godoc'''<ref>[https://blog.golang.org/godoc-documenting-go-code Godoc: documenting Go code]</ref>. Produiñ a ra godoc pajennoù HTML a c’heller lenn en un navigater. Implijet eo, da skouer, evit skrivañ teuliadur bibliotek standard Go hag ar servijer godoc.org<ref>[https://godoc.org/ godoc.org]</ref>. == Añvironamanchoù deveulopamant evit Go == Daoust ma n’eus añvironamant deveulopamant ofisiel ebet, meur a hini a zo implijet gant kalz programmerien. Hervez sontadeg ar skipailh Go<ref>[https://blog.golang.org/survey2018-results Sontadeg Go 2018]</ref> e implij al lodenn brasañ anezho '''Visual Studio Code''', heuliet gant '''Goland''' (diazezet war '''IntelliJ'''), '''Vim''', '''Emacs''', '''Sublime Text''', '''Atom''' ha '''Visual Studio'''. == Meziantoù skrivet e Go == Meur a lojisiel savet gant tud Google a zo skrivet e Go, da skouer servijer telekargañ dl.google.com<ref>[https://golang.org/doc/faq#internal_usage Go FAQ — Is Google using Go internally?]</ref>. Kalz lojisieloù all a zo skrivet e Go ivez, sed amañ un nebeud skouerioù: * [[Docker]]<ref>[https://fr.slideshare.net/jpetazzo/docker-and-go-why-did-we-decide-to-write-docker-in-go/18-Why_GoThe_Five_Reasons_Why Docker and Go: why did we decide to write Docker in Go?]</ref> * [[Kubernetes]]<ref>[https://opensource.com/resources/what-is-kubernetes What is Kubernetes?]</ref> * Hugo<ref>[https://gohugo.io/about/what-is-hugo/ What is Hugo]</ref> == Liammoù diavaez == * [https://www.golang.org Lec’hienn ofisiel] * [https://play.golang.org/ Poull-traezh Go], e lec’h ma c’heller skrivañ programmoù war eeun en un navigater. == Referañsoù == <references /> [[Rummad:Lavarioù programmiñ]]
 
== War-dro Go ==
 
=== Anv ===
 
Anv ar yezh a zo '''Go'''. Pa ne c’heller ket ober gant ar ger '''go''' e vez implijet '''golang''' en e lec’h<ref>[https://golang.org/doc/faq#go_or_golang Go FAQ — Go or Golang?]</ref>.
 
=== Istor ===
 
Kroget o deus Robert Griesemer, Rob Pike ha [[Ken Thompson]] krouiñ Go e miz Gwengolo 2007, ha deuet eo Ian Taylor ha Russ Cox da labourat ganto e 2008. Roet eo bet da c’houzout d’an holl e miz Du 2009<ref name=history>[https://golang.org/doc/faq#history Go FAQ — What is the history of the project?]</ref>. O fal a oa sevel ur yezh programmiñ nevez, simploc’h evit ar re a oa implijet peurliesañ er mare-se (C, C++, Java…), hag e vije aes ganti ober gant mikroprosesorioù liesgalon<ref>[https://golang.org/doc/faq#What_is_the_purpose_of_the_project Go FAQ — What is the purpose of the project?]</ref>.
 
Degaset e vez div zoare Go pep bloaz, unan e miz C’hwevrer hag unan e miz Eost abaoe Go 1.5<ref>[https://golang.org/doc/devel/release.html Release history]</ref>. Abaoe Go 1 e rank pep doare bezañ kendere war-grec’h<ref>[https://golang.org/doc/go1compat Go 1 and the Future of Go Programs]</ref>.
 
=== Gopher ===
 
[[File:Gogophercolor.png|thumb|[[Razh-godell|Gopher]], arouez Go.]]
 
Arouez Go eo ur [[razh-godell]] (''gopher'' e saozneg) treset gant Renée French<ref>[https://blog.golang.org/gopher The Go Gopher — The Go Blog]</ref>. Graet e vez implijerien Go ''gophers'' ivez<ref name=history />.
 
== Al lavar ==
 
=== Anvioù disklaeriet ===
 
Gallout a reer reiñ anvioù da bep tra gant arouezioù [[Unicode]], da lavarout eo, implijout lizherennoù evel '''ñ''' pe '''ù''' e anvioù ar variantennoù<ref>https://golang.org/doc/faq#unicode_identifiers</ref>.
 
=== Memor ===
 
Kempennet e vez ar memor gant ur [[skuber-dilerc’hoù]], un isprogram a glask pep tamm memor a zo bet merket evel implijet met n’eo ket ken. Neuze, n’eo ket ar programmer a rank diverkañ an tammoù memor pa n’eus ket ezhomm anezho ken, pezh a gemer kalz amzer d’ar brogrammerien hag a zo kaoz kalz fazioù e programmoù skrivet e yezhoù ha na reont ket gant ur skuber-dilerc'hoù<ref>[https://golang.org/doc/faq#garbage_collection Go FAQ — Why do garbage collection? Won't it be too expensive?]</ref>.
 
=== Tiperezh ===
 
Strizh eo reolennoù tipañ Go. Rankout a ra pep variantenn bezañ disklêriet gant e zip, ha ne vez ket treuztipet ar variantennoù nemet pa vez goulennet gant ar programmer. Daoust m’eo Go ur yezh programmiñ reteret objed, n’eus klasoù ebet, e kontrol da yezhoù evel C++ pe Java, met gallout a reer stagañ metodoù ouzh pep tip. Gallout a reer krouiñ etrefasioù, met ne zisklêrier ket o implij (n’eus ger miret par da '''implements''' ebet)<ref>[https://golang.org/doc/faq#types Go FAQ — Types]</ref>.
 
=== Dastumadoù ha for range ===
 
Tipoù ispicial zo e Go evit ober gant dastumadoù: tailhennoù (''slices'') ha tablennoù asosiativel (''maps''). Un dailhenn eo un daolenn a c’hell kreskiñ hep harz nemet memor an urzhiataer, e kontrol d’an taolennoù e kaver e meur a lavar programmiñ all. Taolennoù normal zo e Go ivez, da vezañ implijet pa ouzer pet roadenn a vo enni.
 
Gant an daou seurt a dip-mañ e c’heller implijout an tro '''for range''' evit ober un dra bennak gant pep roadenn.
 
Da skouer, setu penaos krouiñ an dailhenn, lakaat an niverennoù etre 3 ha 6 enni, ha diskwel pep niverenn ([https://play.golang.org/p/02LG1QUQlQO gwelout er poull-traezh]).
 
<syntaxhighlight lang="Go">
var niverennoù []int
for niverenn := 3; niverenn < 7; niverenn++ {
niverennoù = append(niverennoù, niverenn)
}
for i, n := range niverennoù {
fmt.Printf("%d: %d\n", i, n)
}
</syntaxhighlight>
 
=== Goroutines ===
 
''Goroutines'' zo isprogrammoù a c’hell labourat e memes tro. Par int da [[:en:Green_threads|neudelloù gwer]], da lavarout eo, prosesusoù skañv krouet gant sikour ar reizhiad korvoiñ ha meret gant levraoueg peurgas Go. Lañset e vez ur goroutine evel ma c’halver ur fonksion, nemet gant ar ger miret '''go''' en a-raok<ref>[https://tour.golang.org/concurrency/1 A Tour of Go — Goroutines]</ref>.
 
=== Kanolioù ===
 
Gant ''kanolioù'' e c’haser roadennoù a c’hell bezañ resevet gant prosesusoù all<ref>[https://tour.golang.org/concurrency/2 A Tour of Go — Channels]</ref>. Neuze e c’hell meur a c’horoutine treuzkas kannadoù kenetrezo en un doare aesoc’h evit an doareoù kavet el lodenn vrasañ eus al lavarioù programmiñ all.
 
=== Dematañ e Go ===
 
Sed amañ ur program a lavar demat d’an holl e Go ([https://play.golang.org/p/psxLadrE-W- gwelout anezhañ er poull-traezh]):
 
<syntaxhighlight lang="Go">
package main
 
import (
"fmt"
)
 
func main() {
fmt.Println("Demat d’an holl!")
}
</syntaxhighlight>
 
== Binvioù ==
 
=== Kompiler ===
 
Abaoe doare 1.5 eo kompiler ofisiel Go skrivet e Go<ref>[https://golang.org/doc/faq#What_compiler_technology_is_used_to_build_the_compilers Go FAQ — What compiler technology is used to build the compilers?]</ref>. Kompilerioù all zo: gccgo, diazezet war [[GCC]]; gollmv, diazezet war [[LLVM]]; TinyGo<ref>[https://github.com/tinygo-org/tinygo TinyGo]</ref>, evit ar sistemoù emframmet.
 
Strizh-kenañ eo kompiler Go. Da skouer, disklêriañ ur variantenn hep implijout anezhi zo ur fazi a lak ar c’hompiler da nac’hañ kompilañ ar program. A-ratozh-kaer eo evit klask lakaat diaesoc’h ober fazioù e programmoù Go<ref>[https://golang.org/doc/faq#unused_variables_and_imports Go FAQ — Can I stop these complaints about my unused variable/import?]</ref>.
 
Gallout a ra ar c’hompiler ofisiel produiñ restroù binarel da beurgas evit meur a reizhiad korvoiñ: [[Linux]], [[Microsoft Windows|Windows]], [[Darwin(kraoñell)|Darwin]] (kraoñell [[Mac OS X]]), [[FreeBSD]] ha reizhiadoù [[Unix]] all<ref>[https://golang.org/doc/install/source#environment Optional environment variables]</ref>.
 
=== Lodennoù ===
 
Abaoe Go 1.11 e c’heller sevel tammoù kod, anvet ''modules'' (lodennoù), da vezañ implijet e programmoù all<ref>[https://blog.golang.org/using-go-modules Using Go Modules — The Go Blog]</ref>. Disklaeriet e vez doare pep lodenn er restr '''go.mod''', a c’hell bezañ produet gant ar c’hompiler. Pa vez kompilet ur program e vez pellkarget al lodennoù diwar ar genrouedad ma ’z eus ezhomm.
 
=== Furmader ===
 
Gant '''gofmt''' e c’heller feurmatañ ur restr Go, da lavarout eo, lakaat anezhi en ur stumm standard hep cheñch ster ar program<ref>[https://golang.org/cmd/gofmt/ gofmt]</ref>. A-drugarez d’e reolennoù strizh, e kontrol d’al lodenn vrasañ eus ar yezhoù programmiñ all, n’eus ket da dabutal diwar-benn stumm ar c’hod.
 
=== Testoù unanel ===
 
E touesk ar binvioù standard e kaver '''go test''', a bourchas pep tra evit ober testoù unanel<ref>[https://golang.org/pkg/testing/ Testing]</ref>. Gallout a ra '''go tost''' peurgas an holl testoù ha diskouez ar feur goloadurezh. Tu zo ivez ober bankoù test evit muzuliañ barregezh an isprogrammoù.
 
=== Teuliadur ===
 
Gallout a reer skrivañ notennoù ispisial e kod ar program, da vezañ tretet gant '''godoc'''<ref>[https://blog.golang.org/godoc-documenting-go-code Godoc: documenting Go code]</ref>. Produiñ a ra godoc pajennoù HTML a c’heller lenn en ur merdeer. Implijet eo, da skouer, evit skrivañ teuliadur levraoueg standard Go hag ar servijer godoc.org<ref>[https://godoc.org/ godoc.org]</ref>.
 
== Endroioù diorren evit Go ==
 
Daoust ma n’eus endro diorren ofisiel ebet, meur a hini a zo implijet gant kalz programmerien. Hervez sontadeg ar skipailh Go<ref>[https://blog.golang.org/survey2018-results Sontadeg Go 2018]</ref> e implij al lodenn brasañ anezho '''Visual Studio Code''', heuliet gant '''Goland''' (diazezet war '''IntelliJ'''), '''Vim''', '''Emacs''', '''Sublime Text''', '''Atom''' ha '''Visual Studio'''.
 
== Meziantoù skrivet e Go ==
 
Meur a veziant savet gant tud Google a zo skrivet e Go, da skouer servijer pellkargañ dl.google.com<ref>[https://golang.org/doc/faq#internal_usage Go FAQ — Is Google using Go internally?]</ref>. Kalz meziantoù all a zo skrivet e Go ivez, sed amañ un nebeud skouerioù:
* [[Docker]]<ref>[https://fr.slideshare.net/jpetazzo/docker-and-go-why-did-we-decide-to-write-docker-in-go/18-Why_GoThe_Five_Reasons_Why Docker and Go: why did we decide to write Docker in Go?]</ref>
* [[Kubernetes]]<ref>[https://opensource.com/resources/what-is-kubernetes What is Kubernetes?]</ref>
* Hugo<ref>[https://gohugo.io/about/what-is-hugo/ What is Hugo]</ref>
 
== Liammoù diavaez ==
 
* [https://www.golang.org Lec’hienn ofisiel]
* [https://play.golang.org/ Poull-traezh Go], e lec’h ma c’heller skrivañ programmoù war eeun en ur merdeer.
 
== Daveoù ==
 
<references />
 
[[Rummad:Lavarioù programmiñ]]