Download - 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

Transcript
Page 1: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

1.ConfigurationdevotreenvironnementdedéveloppementGo1.1.Installation1.2.$GOPATHetworkspace1.3.CommandesGo1.4.OutilsdedéveloppementGo1.5.Résumé

AppendiceARéférences

1ConfigurationdevotreenvironnementdedéveloppementGoBienvenuedanslemondedeGo,commençonsnotreexploration!

Goestunlangagedeprogammationsystèmeconcurrentàlacompilationrapideetdisposantd'unrammasse-miettes.Ilalesavantagessuivants:

Compilationd'unlargeprojetenquelquessecondes.Fournitunmodèlededéveloppementfacileàgérer,évitantlaplupartdesproblèmesliésauxfichiersd'en-têteC.C'estunlangagestatiqueavecunsystèmedetypesdedonnéessimple,afinquelesutilisateursn'aientpasàperdredutempsàgérerlesrelationsentretypes.Ilpeut-êtrevucommeunlangageorienté-objetsimplifié.Ilpossèdeunramasse-miettes.Ilfournitunsupportdebasepourlaconcurrenceetdelacommunication.Conçupourlesordinateursmulti-core.

Goestunlangagecompilé.Ilcombinel'efficacitédedéveloppementdeslangagesinterprétésoudynamiquesaveclasécuritédelanguesstatiques.Ilvaêtrelalanguedechoixpourlesordinateursmodernesmulti-coreinter-connectés.Àcesfins,ilyaquelquesproblèmesquidoiventfondamentalementêtrerésoluauniveaudecelangage,commeunsystème

Page 2: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

detypestrèsexpressifetléger,unmodèledeconcurrencenatif,etunramasse-miettesgéréstrictement.Durantlongtemps,aucunpaquetououtiln'estapparuquiavaitpourbutderésoudretouscesproblèmesdefaçonpragmatique;ainsinaquitlamotivationpourdulangageGo.

Danscechapitre,jevaisvousmontrercommentinstalleretconfigurervotrepropreenvironnementdedéveloppementGo.

Tabledesmatières

Navigation

TabledesmatièresSectionsuivante:Installation

1.1Installation

3méthodesd'installation

IlyaplusieursfaçonsdeconfigurervotreenvironnementdedéveloppementGosurvotreordinateur,vouspouvezchoisircellequivousconvientle

Page 3: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

mieux.Lestroisfaçonslespluscourantessontlessuivantes.

Paquetsd'installationofficiels:L'équipedeGoproposedespaquetsd'installationpourWindows,Linux,Macetencored'autressystèmesd'exploitation.C'estpropablementlaméthodelaplussimplepourcommencer.

InstallationmanuellevialessourcesPopulairechezlesdéveloppeurshabituésauxenvironnementstypeUnix.

Utilisationd'outilstiers.IlyaplusieursoutilstiersetgestionnairespourinstallerGo,commeapt-getpourUbuntuethomebrewpourMac.

Danslecasoùvousvoudriezinstallerplusd'uneversiondeGosurvotremachine,vousdevriezjeterunoeilàl'outilGVM.C'estlemeilleuroutilpouraccomplircettetâche,sinonvousdevrezlefairevous-même.

##Installationàpartirdessources

Parce-quecertainespartiesdeGosontécritsenCPlan9etenassembleurAT&T,vousdevezinstalleruncompilateurCavantdecontinuer.

SousMac,sivousavezXcoded'installé,vousdisposédéjàd'uncompilateur.

SurunsystèmetypeUnix,vousdevezinstallergccouuncompilateuréquivalent.Parexemple,enutilisantlegestionnairedepaquetsapt-get(livréavecUbuntu),vouspouvezinstallerlescompilateursrequiscommesuit:

sudoapt-getinstallgcclibc6-dev

SousWindows,vousdevezinstallerMinGWpourinstallergcc.N'oubliezpasdeconfigurervosvaraiblesd'environnementaprèsavoirfinalisél'installation.

L'équipeGoutiliseMercurialpourgérerlecodesource,vousdevezcommencerparinstallercelui-cipourtéléchargerlecodesourcedeGo.

Page 4: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

UnefoisMercurialinstallé,exécutezlescommandessuivantespourclonerlecodesourcedeGoetlecompiler:

hgclone-ureleasehttps://code.google.com/p/gocdgo/src./all.bash

Uneinstallationréussiefiniraenaffichantlemessage"ALLTESTSPASSED."

SousWindows,vouspouvezarriveràfairelamêmechoseenlançantall.bat.

SivousutilisezWindows,lepaquetd'installationvamettreàjourautomatiquementvosvariablesd'environnement.SousUnix,vousdevezconfigurercelles-cimanuellementcommesuit:

exportGOROOT=$HOME/goexportGOBIN=$GOROOT/binexportPATH=$PATH:$GOROOT/bin

Sivousvoyezl'affichagesuivantsurvotreécran,l'installations'estterminéeavecsuccès.

Page 5: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

Figure1.1Informationaprèsinstallation

Lorsquevousvoyezlesinformationsd'utilisationdeGo,celasignifiequevousavezinstalléGoavecsuccèssurvotreordinateur.Sivotresystèmeaffiche'aucunecommandeGo',vérifiezquevotrevariabled'environnement$PATHcontientbienlechemind'installationdeGo.

Utilisationdespaquetsstandardsd'installation

Page 6: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

Goadespaquetsd'installationrapidespourchaquesystèmed'exploitationsupporté.CespaquetsinstallentGodans/usr/local/go(c:\GosousWindows)pardéfaut.Biensûr,celaestconfigurable,maisvousaurezégalementàchangermanuellementlesvariablesd'environnementcommedécritprécédemment.

Commesavoirsivotresystèmeest32ou64bits?

L'étapesuivantedépenddutyped'architecturedevotresystème,nousdevonsdonclevérifieravantdetéléchargerlespaquetsd'installation.

SivousutilisezWindows,tapezWin+Retlancezl'outildecommandescmd.Lancezlacommandesysteminfoquivavousafficherdesinformationstrèsutilessurvotresystème.Trouvezlaligneindiquant"typedusystème"-sivousvoyez"x64-basedPC"celasignifiequevotresystèmeest64-bit,sinonilest32-bit.

Jevousrecommandefortementdetéléchargerlepaquet64-bitsivousêtessousMac,commeGonesupportepluslesprocesseurs32-bitsousMacOSX.

LesutilisateursLinuxpeuventexécuteruname-adansunterminalpourafficherlesinformationssystème.Unsystèmed'exploitation64-bitafficheralesinformationssuivantes:

<descriptionsdiverses>x86_64x86_64x86_64GNU/Linux

CertainesmachinescommeUbuntu10.04afficherontsimplement:

x86_64GNU/Linux

Lessystèmes32-bitafficherontquantàeux:

<descriptionsdiverses>i686i686i386GNU/Linux

Page 7: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

Mac

Allersurlapagedetéléchargement,choisirgo1.4.darwin-386.pkgpourlesystèmes32-bitetgo1.4.darwin-amd64.pkgpourles64-bit.Cliquez"next"jusqu'àlafinduprocessus,~/go/binseraajoutéau$PATHdusystèmeàlafindel'installation.Maintenantouvrezunterminalettapezgo.Vousdevriezavoirlamêmesortiequ'enfigure1.1.

Linux

Alleràlapagedetéléchargement,choisirgo1.4.linux-386.tar.gzpourlessystèmes32-bitetgo1.4.linux-amd64.tar.gzen64-bit.SupposonsquevousvoulezinstallerGodans$GO_INSTALL_DIRpath.Décompressezl'archivetar.gzdansledossierdésirédedestinationenutilisantlacommandetarzxvfgo1.4.linux-amd64.tar.gz-C$GO_INSTALL_DIR.Ensuitedéfinissezvotre$PATHavec:exportPATH=$PATH:$GO_INSTALL_DIR/go/bin.Vouspouvezmaintenantouvrirunterminalettapezgo.Vousdevriezavoirlamêmesortiequ'enfigure1.1.

Windows

Allezàlapagedetéléchargement,choisissezgo1.4.windows-386.msipourlessystèmes32-bitetgo1.4.windows-amd64.msipourlessystèmes64-bit.Cliquez"next"jusqu'àlafinduprocessus,c:/go/binseraajhoutéàpath.Vouspouvezmaintenantouvrirunterminalettapezgo.Vousdevriezavoirlamêmesortiequ'enfigure1.1.

Utilisezdesoutilstiers

GVM

GVMestunoutildegestiondeversionsmultiplesdéveloppéparuntiers,commervmpourruby.Ilestsimpled'utilisation.InstallezGVMaveclescommandessuivantesdansvotreterminal:

Page 8: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

bash<<(curl-s-S-Lhttps://raw.github.com/moovweb/gvm/master/binscripts/gvm-installer)

EnsuitenousinstallonsGoaveclescommandessuivantes:

gvminstallgo1.4gvmusego1.4

Àlafinduprocessus,Goestinstallé.

apt-get

UbuntuestlaversionbureaulaplusutiliséedeLinux.Elleutiliseapt-getcommegestionnairedepaquets.OnpeutinstallerGoaveclescommandessuivantes:

sudoadd-apt-repositoryppa:gophers/gosudoapt-getupdatesudoapt-getinstallgolang-stable

Homebrew

HomebrewestunoutildegestiondelogicielscommunémentutilisésousMacpourgérerlespaquets.OnpeutinstallerGoaveclescommandessuivantes:

brewinstallgo

Navigation

Tablesdesmatières

Page 9: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

Sectionprécédente:ConfigurationdevotreenvironnementGoSectionsuivante:$GOPATHetworkspace

#1.2$GOPATHetworkspace

$GOPATH

LescommandesGoreposentsurunevariabled'environnementnommée$GOPATH1.Notezquecen'estpaslavariable$GOROOToùGoestinstallé.Cettevariablepointeversvotreespacedetravail(workspace)Godevotreordinateur(J'utilisececheminsurmonordinateur;sivousn'utilisezpaslamêmestructurededossiers,veillezàlefairecorrespondreparvous-même).

DansunsystèmedetypeUnix,lavariablepeut-êtreconfiguréecommesuit:

exportGOPATH=/home/apple/mygo

Pourplusdecommodité,vousdevriezajouteruneligneàvotre.bashrcou.zshrc,outoutautrefichierdeconfigurationdeconfigurationdushellapproprié.

SousWindows,vousdevezcréerunevariabled'environnementnomméeGOPATH,etdéfinirsavaleuràc:\mygo:

GOPATH=c:\mygo

Ilestpossibled'avoirplusieursrépertoiresdansvotre$GOPATH,àséparerparun:sousUnix,et;sousWindows

Dansvotre$GOPATHvousdevezavoirtroissous-répertoires:

srcpourhébergerlecodesource(parexemple:.go.c.h.s,etc.)pkgpourlesfichierscompilés(parexemple:.a)

Page 10: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

binpourlesfichiersexécutablecompilés

Danslerestedecelivre,j'utiliseledossierMygocommerépertoiredemon$GOPATH.

Dossierdepaquets

Créezlesfichiersetdossiersd'unpaquetsourcecomme$GOPATH/src/mymath/sqrt.go(mymathestlenomdupaquet)

Chaquefoisquevouscréezunpaquet,vousdevriezcréerunnouveaudossierdanslerépertoiresrc.Lesnomsdedossierscorrespondentgénéralementàceluidupaquetquevoussouhaitezutiliser.Vouspouvezavoirplusieursniveauxdedossierssivousledésirez.Parexemplesivouscréezledossier$GOPATH/src/github.com/astaxie/beedb,alorslechemindupaquetseragithub.com/astaxie/beedb.Lenomdupaquetseraceluidudernierdossierdevotrechemin,quiestbeedbdansnotreexemple.

Exécutezlescommandessuivantes:

cd$GOPATH/srcmkdirmymath

Créezunnouveaufichiersqrt.go,ajoutezlecontenusuivantàcelui-ci:

//Codesourcede$GOPATH/src/mymath/sqrt.gopackagemymath

funcSqrt(xfloat64)float64{z:=0.0fori:=0;i<1000;i++{z-=(z*z-x)/(2*x)}returnz}

Page 11: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

Maintenantledossierdemonpaquetaétécrééetsoncodeécrit.Jevousrecommanded'utiliserlemêmenompourvospaquetsetleursdossiers,etquelesdossierscontiennenttouslesfichierssourcesdupaquet.

Compilationdespaquets

Nousavonscréénotrepaquetprécédemment,maiscommentlecompilerpourunusageconcret?Ilyadeuxméthodesdifférentes.

1. Placez-vousdansledossiercontenantvotrepaquet,puisexécutezlacommandegoinstall.

2. Exécutezlacommandeprécédentemaisenpassantunnomdefichierenparamètre,commegoinstallmymath.

Aprèscompilation,onpeutouvrirledossiersuivant:

cd$GOPATH/pkg/${GOOS}_${GOARCH}//Onpeutytrouverlefichiercompilémymath.a

Lefichierdontlesuffixeest.aestlefichierbinairedenotrepaquet.Commentl'utiliser?

Assurément,nousdevonscréeruneapplicationpourl'utiliser.

Créezunnouveaupaquetappelémathapp.

cd$GOPATH/srcmkdirmathappcdmathappvimmain.go

Lecodedemain.go

Page 12: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

//codesourcede$GOPATH/src/mathapp/main.go.packagemain

import("mymath""fmt")

funcmain(){fmt.Printf("Hello,world.Sqrt(2)=%v\n",mymath.Sqrt(2))}

Pourcompilercetteapplication,vousdevezvousplacerdansledossierdupaquet

cd$GOPATH/src/mathapp

puisexécutez

goinstall

Vousdevriezdésormaisvoirunfichierexécutablemathappgénérédansledossier$GOPATH/bin/.Pourlancerceprogramme,utilisezlacommande

./mathapp

Vousdevriezvoirlecontenusuivantdansvotretemrinal:

Helloworld.Sqrt(2)=1.414213562373095

Installerdespaquetsdistants

Page 13: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

Goaunoutilpourinstallerdespaquetsdistants,quiestl'outilgoget.Ilsupportelamajoritédescommunautéslibres,commeGithub,GoogleCode,BitBucket,etLaunchpad.

gogetgithub.com/astaxie/beedb

Vouspouvezutilisergoget-upourmettreàjourvospaquetsdistants,celamettraaussiàjourlesdépendances.

Vousobtiendrezlecodesourcedespaquetsdésirésgrâceàcettecommande,depuisdifférentesplate-formes,utilisantchacuneleursystèmedegestiondeversion.Parexemple,gitpourGithubethgpourGoogleCode.Ainsivousdevrezaupréalableinstallerleclientdusystèmedegestiondeversionappropriéavantd'utilisergoget.

Aprèsavoirutilisélescommandesprécédentes,votrestructurededossierdevraitressembleràcelle-ci:

$GOPATHsrc|-github.com|-astaxie|-beedbpkg|--${GOOS}_${GOARCH}|-github.com|-astaxie|-beedb.a

Enfait,gogetclonelesourcecodedansledossier$GOPATH/srcenlocal,puisexécutegoinstall.

Vouspouvezutiliserdespaquetsdistantsdemanièresimilaireauxpaquetslocaux.

import"github.com/astaxie/beedb"

Page 14: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

Arborescencecomplètededossier

Sivousavezsuivitouteslesétapesprécédentes,lastructuredevotredossierressembledésormaisàceci:

bin/mathapppkg/${GOOS}_${GOARCH},suchasdarwin_amd64,linux_amd64mymath.agithub.com/astaxie/beedb.asrc/mathappmain.gomymath/sqrt.gogithub.com/astaxie/beedb/beedb.goutil.go

Vouspouvezdésormaisvousrendrecomptedemanièreplusclairedel'arborescence;bincontientlesexécutables,pkglesfichierscompilésetsrclespaquetssources.

[1]Leformatdesvariablesd'environnementsousWindowsest%GOPATH%,pourtantcelivresuitprincipalementlanormeUnix,lesutilisateursWindowsdevrontfairelesmodificationsappropriées.

Navigation

Page 15: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

TabledesmatièresSectionprécédente:InstallationSectionsuivante:Gocommands

#1.3CommandesGo

CommandesGo

LelangageGoestdisponiblepardéfautavecunensemblecompletd'outils.Vouspouvezexécuterlalignedecommandegopourlesafficher:

Page 16: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

Figure1.3Informationsdétailléesaffichéesparlacommandego

Ellesonttoutesuneutilité.Voyonsl'utilisationdecertainesd'entreelles.

gobuild

Cettecommandesertdetestsdecompilation.Ellecompileralespaquetsdépendantsaubesoin.

Silepaquetn'estpaslepaquetmain,commemymathensection1.2,rienneseragénéréaprèsl'exécutiondegobuild.Sivousavezbesoindefichierdepaquet.adans$GOPATH/pkg,utilisezplutôtgoinstallàlaplace.Silepaquetestlepaquetmain,lacommandegénéreraunexécutabledanslemêmedossier.Sivousvoulezquel'exécutablesoitgénérédans$GOPATH/bin,utilisezgoinstallougobuild-o${VOTRE_CHEMIN}/a.exe.

S'ilyaplusieursfichiersdansledossier,maisquevousvoulezjustecompilerund'entreeux,ajoutezlenomdecefichieraprèsgobuild.Parexemple,gobuilda.go.gobuildvacompilerlesfichiersdanscedossier.Vouspouvezégalementdéfinirlenomdufichiergénéré.Parexemple,dansleprojetmathapp(section1.2),lancergobuild-oastaxie.exevagénérerastaxie.exeaulieudemathapp.exe.Lenompardéfautestlenomdudossier(packagenommain)ouceluidupremierfichiersource(paquetmain).

(D'aprèsLesSpécificationsduLangageGo,lesnomsdepaquetsdevraientêtreceuxsuivantladéclarationpackageenpremièrelignedevosfichierssources.Celan'apasàêtrelemêmequeceluidudossier,etquelenomdefichierdel'exécutablesoitceluidudossierpardéfaut.)

gobuildignorelesfichiersdontlenomcommencepar_ou..

Sivousvoulezavoirdifférentsfichierssourcesparsystèmed'exploitation,vouspouveznommervosfichiersavecpoursuffixele

Page 17: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

nomdusystème.Supposezqu'ilyaitplusieursfichierspourchargerdestableaux.Cesfichierspeuventêtrenomméscommesuit:

array_linux.go|array_darwin.go|array_windows.go|array_freebsd.go

gobuildchoisiraceluiquicorrespondraàvotresystèmed'exploitation.Parexemple,seulseracompiléarray_linux.gosousLinux,lesautresserontignorés.

goclean

Cettecommandesertàsupprimerlesfichiersgénérésparlecompilateur,comprenantlesfichierssuivants:

_obj///Anciendossierobjet,crééparlesMakefiles_test///Anciendossiertest,crééparlesMakefiles_testmain.go//Anciendossierdegotest,crééparlesMakefiles

test.out//Ancienfichierdetest,crééparlesMakefilesbuild.out//Ancienfichierdetest,crééparlesMakefiles*.[568ao]//fichiersobjets,créésparlesMakefiles

DIR(.exe)//générépargobuildDIR.test(.exe)//générépargotest-cMAINFILE(.exe)//générépargobuildMAINFILE.go

J'utilisegénéralementcettecommandepoursupprimerlesfichiersavantdemettreàjourmonprojetsurGithub.Ilssontutileslorsdetestsenlocal,maisinutilesàavoirdansvotresystèmedegestiondeversion.

gofmt

LesdéveloppeursC/C++doiventavoirl'habitudedesdébatssurquelleconventiond'écrituredecodeestlameilleure:lestyleK&RouANSI.AvecGo,iln'existequ'uneconventionàappliquer.Parexemple,lesparenthèsesouvrantesdoiventêtreenfindeligne,etnepeuventêtresuruneligne

Page 18: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

toutesseules,sinonvousaurezdeserreursàlacompilation!

Parchance,vousn'avezpasàretenirtoutescesrègles.gofmtlefaitàvotreplace.exécutezsimplementgofmt<Filename>.godansunterminal.Jen'utilisepassouventcettecommandecarlesIDEl'exécutentnormalementautomatiquemenntlorsquevoussauvegardezunfichier.NousreviendronssurlesIDEdanslasectionsuivante.

Onutilisegénéralementgofmt-waulieudegofmt.Cederniernemodifiepasvosfichierssourceaprèsformattage.gofmt-wsrcformattetoutvotreprojet.

goget

Cettecommanderécupèredespaquetsdistants.SontsupportésBitBucket,Github,GoogleCodeetLaunchpad.Ilsepasseenfaitdeuxchosesàl'exécutiondecettecommande.Enpremierlieu,Gotéléchargelecodesource,puisilexécutegoinstall.Avantd'utilisercettecommande,assurez-vousd'installerlesoutilsnécessaires.

BitBucket(MercurialGit)Github(git)GoogleCode(Git,Mercurial,Subversion)Launchpad(Bazaar)

Pourutilisercettecommande,vousdevezinstallercesoutilscorrectement.N'oubliezpasdedéfinirvotre$PATH.Notezquegogetsupporteégalementvosnomsdedomainepersonnalisés.Exécutezgohelpremotepourenconnaîtrelesdétails.

goinstall

Cettecommandecompiletouslespaquetsetgénérelesfichiers,puislesdéplacedans$GOPATH/pkgou$GOPATH/bin.

Page 19: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

gotest

Cettecommandechargetouslesfichiersquiontpournom*_test.goetgénérelesfichiersdetest,puisaffichedesinformationssimilairesàcelles-ci.

okarchive/tar0.011sFAILarchive/zip0.022sokcompress/gzip0.033s...

Elletestetousvosfichiersdetestpardéfaut.Utilisezlacommandegohelptestflagpourplusdedétails.

godoc

Beaucoupdepersonnesdisentqu'ilestinutiled'avoirunequelconquedocumentationtierspourprogrammerenGo(bienqu'enfaitj'aidéjàdéveloppéCHM).Goapardéfautunoutiltrèsélaborépourtravailleravecladocumentation.

Alorscommentrechercherdesinformationssurunpaquetdansladocumentation?Parexemple,sivousvoulezplusd'informationssurlepaquetbuiltin,utilisezlacommandegodocbuiltin.Delamêmemanière,utilisezlacommandegodocnet/httppourrechercherladocumentationdupaquethttp.Sivousvoulezplusdedétailsspécifiquesàunefonction,utilisezgodocfmtPrintf,ougodoc-srcfmtPrintfpourvoirlecodesource.

Exécutezlacommandegodoc-http=:8080,puisouvrez127.0.0.1:8080dansvotrenavigateur.Vousdevriezvoirungolang.orglocal.Ilpeutnonseulementafficherlesinformationsdespaquetsstandards,maisaussilespaquetsdevotredossier$GOPATH/pkg.C'esttrèsbienpourceuxbloquésderrièrelaGrandeMurailledeChine.

Page 20: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

Autrescommandes

Gofournitd'autrescommandesquecellesvuesprécédemment:

gofix//miseàjourducoded'uneversionantérieure//àgo1versuneversionplusrécentequego1goversion//obtenirdesinformationssurvotreversiondeGogoenv//affichervosvariablesd'environnementGogolist//listertouslespaquetsinstallésgorun//compilerlesfichierstemporairesetlancerl'application

Lescommandesquel'onavuesproposentégalementplusd'optionsquecequenousavonsvu.Vouspouvezutilisergohelp<command>pourlesvisualiser.

Navigation

TabledesmatièresSectionprécédente:$GOPATHetworkspaceSectionsuivante:OutilsdedéveloppementGo

OutilsdedéveloppementGoDanscettesection,jevaisvousprésenterquelquesIDEquipeuventvousaideràcoderplusefficacement,grâceàdesfonctionnalitéstelleslacomplétiondecodeetleformattageautomatiques.Ilssonttousmulti-plate-formes,lesmanipulationsprésentéesnedevraientdoncpasêtretrèséloignées,mêmesivousn'utilisezpaslemêmesystèmed'exploitation.

LiteIDE

LiteIDEestunIDElégeretmulti-plate-formesdédiéuniquementau

Page 21: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

développementenGo,développéparvisualfc.

Figure1.4PanneauprincipaldeLiteIDE

FonctionnalitésdeLiteIDE:

Multi-plate-formesWindowsLinuxMacOS

CompilationcroiséeGestiond'environnementsdecompilationmultiplesSupportdelacompilationcroiséeavecGo

Standardsengestiondeprojet

Page 22: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

Documentationbaséesurle$GOPATHCompilationbaséesurle$GOPATHIndexladocumentationdel'APIbaséesurle$GOPATH

ÉditeurdecodesourceGoMiseenformeducodeSupportcompletdegocodeGestiondeladocumentationandetdel'indexdel'APIdeGoAfficherl'expressiond'uncodeviaF1NaviguerentredéclarationdefonctionsviaF2SupportGdbAuto-formattageviagofmt

AutresMulti-languesSystèmed'extensionsThèmesd'éditeurdetexteSupportdelasyntaxebasésurKateComplétionintelligentebaséeenmodefull-textPersonnalisationdesraccourcisSupportMarkdown

PrévisualisationentempsréelCSSpersonnaliséExportationenHTMLetPDFConversionetfusionenHTMLetPDF

InstallationdeLiteIDE

InstallerLiteIDE

Pagedetéléchargement

Codesource

VousdevezinstallerGoenpremier,puistéléchargerlaversion

Page 23: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

adaptéeàvotresystèmed'exploitation.Décompressezlepaquetpourensuitel'exécuterdirectement.

Installergocode

Vousdevezinstallergocodepourutiliserlacomplétionintelligente

goget-ugithub.com/nsf/gocode

Environmentdecompilation

ChangerdeconfigurationdeLiteIDEpourcorrespondreàvotresystèmed'exploitationDansWindowsaveclaversion64-bitdeGo,vousdevriezutiliserwin64commeconfigurationdevotreenvironnementdanslabarred'outils.Ensuite,choisissezOptions,puisLiteEnvdanslalistedegaucheetsélectionnezlefichierwin64.envdanslalistededroite.

GOROOT=c:\goGOBIN=GOARCH=amd64GOOS=windowsCGO_ENABLED=1

PATH=%GOBIN%;%GOROOT%\bin;%PATH%

ModifiezGOROOT=c:\goparlechemindevotreinstallationGo,puissauvegardez.SivousavezMinGW64,ajoutezc:\MinGW64\binauchemindevotrevariabled'environnementpourlesupportdecgo.

PourLinuxavecGoenversion64-bit,choisissezlinux64commeconfigurationdevotreenvironnementdanslabarred'outils.Ensuite,choisissezOptions,puisLiteEnvdanslalistedegaucheetsélectionnezlefichierlinux64.envdanslalistededroite.

GOROOT=$HOME/go

Page 24: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

GOBIN=GOARCH=amd64GOOS=linuxCGO_ENABLED=1

PATH=$GOBIN:$GOROOT/bin:$PATH

ModifiezGOROOT=$HOME/goparlechemindevotreinstallationGo.

$GOPATH

$GOPATHestlechemindudossierdevosprojets.Ouvrezl'outilcommande(Ctrl+dansLiteIDE),puistapezgohelpgopathpourplusdedétails.C'esttrèssimpledevoiretmodifiervotre$GOPATHdansLiteIDE.ChoisissezView-SetupGOPATHpourvoiretmodifiercesvaleurs.

SublimeText

DanscettepartiejevaisvousprésenterSublimeText2(Sublimetoutcourt)+GoSublime+gocode+MarGo.

ComplétionIntelligente

Page 25: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

Figure1.5ComplétionintelligenteavecSublime

Auto-formattageducodesource

Gestiondeprojet

Page 26: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

Figure1.6GestiondeprojetsousSublime

Colorationsyntaxique

Versiongratuited'essaipermanentesanslimitationdefonctionnalités.Vousserezinvitédetempsentempsàacheterunelicence,quevouspourrezrefusersivousvoulez.Biensûr,sivoustrouvezqueSublimeaugmentevotreproductivitéetquevousl'appréciezvraiment,mercid'acheterunelicenceetdesupportersondéveloppement!

CommencezpartéléchargeruneversiondeSublimeadaptéesàvotresystèmed'exploitation.

1. TapezCtrl+,ouvrezl'invitedecommandesetrentrezlescommandessuivantes:.

importurllib2,os;pf='PackageControl.sublime-package';ipp=sublime.installed_packages_path();os.makedirs(ipp)ifnotos.path.exists(ipp)elseNone;urllib2.install_opener(urllib2.build_

Page 27: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

opener(urllib2.ProxyHandler()));open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace('','%20')).read());print'MercideredémarrerSublimeTextpourfinaliserl'installation'

RedémarrezSublimetextenfind'installation.VousdevrieztrouvezuneoptionPackageControldanslemenu"Preferences".

Figure1.7GestiondepaquetdansSublime

2. PourinstallerGoSublime,SidebarEnhancementsetGoBuild,tapezCtrl+Shift+ppourouvrirPackageControl,puistapezpcip(raccourcipour"PackageControl:InstallPackage").

Page 28: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

Figure1.8InstallerdespaquetssousSublime

Puistapez"GoSublime",entrezOKpourinstallerlepaquet,etrépétezcescommandespourinstallerSidebarEnhancementsetGoBuild.Ànouveau,redémarrezl'éditeurquandl'installations'achève.

3. Pourvérifierlaréussitedel'installation,ouvrezSublime,puisouvrezlefichiermain.gopourvérifierquelacolorationsyntaxiqueestcorrecte.Tapezimportpourvoirsilepromptdelacomplétiondecodes'affiche.Aprèsavoirtapéimport"fmt",tapezfmt.justeaprèsimportpourvoirsiouiounonlacomplétionintelligentedecodedesfonctionsaétéactivéeavecsuccès.

Sitoutfonctionnecorrectement,vousêtesprêt.

Sinon,vérifiezànouveauvotre$PATH.Ouvrezunterminal,tapezgocode.S'ilnes'exécutepas,votre$PATHn'estpasconfigurécorrectement.

Page 29: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

Vim

Vimestunéditeurtrèspopulairechezlesprogrammeurs,quiestuneévolutiondesonprédécesseur,Vi.Iladesfonctionnalitésdecomplétionintelligente,compilationetnavigationentreleserreurs.

Figure1.8ComplétionintelligentepourGosousVim

1. ColorationsyntaxiquesousGo

cp-r$GOROOT/misc/vim/*~/.vim/

2. Activerlacolorationsyntaxique

filetypepluginindentonsyntaxon

Page 30: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

3. Installergocode

goget-ugithub.com/nsf/gocode

gocodeserainstallédans$GOBINpardéfaut

4. Configurergocode

~cd$GOPATH/src/github.com/nsf/gocode/vim~./update.bash~gocodesetpropose-builtinstruepropose-builtinstrue~gocodesetlib-path"/home/border/gocode/pkg/linux_amd64"lib-path"/home/border/gocode/pkg/linux_amd64"~gocodesetpropose-builtinstruelib-path"/home/border/gocode/pkg/linux_amd64"

Explicationssurlaconfigurationdegocode:

propose-builtins:activeounonlacomplétionautomatique;fauxpardéfaut.

lib-path:gocodechercheuniquementlespaquetsdans$GOPATH/pkg/$GOOS_$GOARCHet$GOROOT/pkg/$GOOS_$GOARCH.Ceparamètrepeut-êtreutilisépourajouterdescheminsadditionnels.

5. Félicitations!lancez:emain.gopourexplorerlemondedeGo!

Emacs

Emacsestl'armefatale.Cen'estpasseulementunéditeur,maisaussiunIDEtrèspuissant.

Page 31: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

Figure1.10Panneauprincipaldel'éditeurGod'Emacs

1. Colorationsyntaxique

cp$GOROOT/misc/emacs/*~/.emacs.d/

2. Installergocode

goget-ugithub.com/nsf/gocode

gocodeserainstallédans$GOBINpardéfaut

3. Configurergocode

~cd$GOPATH/src/github.com/nsf/gocode/vim~./update.bash~gocodesetpropose-builtinstruepropose-builtinstrue

Page 32: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

~gocodesetlib-path"/home/border/gocode/pkg/linux_amd64"lib-path"/home/border/gocode/pkg/linux_amd64"~gocodesetpropose-builtinstruelib-path"/home/border/gocode/pkg/linux_amd64"

4. Installerl'AutoCompletion

Téléchargementetdécompression

~makeinstallDIR=$HOME/.emacs.d/auto-complete

Configurer~/.emacsfile

;;auto-complete(require'auto-complete-config)(add-to-list'ac-dictionary-directories"~/.emacs.d/auto-complete/ac-dict")(ac-config-default)(local-set-key(kbd"M-/")'semantic-complete-analyze-inline)(local-set-key"."'semantic-complete-self-insert)(local-set-key">"'semantic-complete-self-insert)

Cliquezcelienpourplusdedétails.

5. Configurer.emacs

;;golangmode(require'go-mode-load)(require'go-autocomplete);;speedbar;;(speedbar1)(speedbar-add-supported-extension".go")(add-hook'go-mode-hook'(lambda();;gocode(auto-complete-mode1)

Page 33: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

(setqac-sources'(ac-source-go));;Imenu&Speedbar(setqimenu-generic-expression'(("type""^type*\\([^\t\n\r\f]*\\)"1)("func""^func*\\(.*\\){"1)))(imenu-add-to-menubar"Index");;Outlinemode(make-local-variable'outline-regexp)(setqoutline-regexp"//\\.\\|//[^\r\n\f][^\r\n\f]\\|pack\\|func\\|impo\\|cons\\|var.\\|type\\|\t\t*....")(outline-minor-mode1)(local-set-key"\M-a"'outline-previous-visible-heading)(local-set-key"\M-e"'outline-next-visible-heading);;Menubar(require'easymenu)(defconstgo-hooked-menu'("Gotools"["Gorunbuffer"got]["Goreformatbuffer"go-fmt-buffert]["Gocheckbuffer"go-fix-buffert]))(easy-menu-definego-added-menu(current-local-map)"Gotools"go-hooked-menu)

;;Other(setqshow-trailing-whitespacet)));;helperfunction(defungo()"runcurrentbuffer"(interactive)(compile(concat"gorun"(buffer-file-name))))

;;helperfunction(defungo-fmt-buffer()"rungofmtoncurrentbuffer"(interactive)(ifbuffer-read-only(progn(ding)(message"Bufferisreadonly"))(let((p(line-number-at-pos))(filename(buffer-file-name))(old-max-mini-window-heightmax-mini-window-height))

Page 34: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

(show-all)(if(get-buffer"*GoReformatErrors*")(progn(delete-windows-on"*GoReformatErrors*")(kill-buffer"*GoReformatErrors*")))(setqmax-mini-window-height1)(if(=0(shell-command-on-region(point-min)(point-max)"gofmt""*GoReformatOutput*"nil"*GoReformatErrors*"t))(progn(erase-buffer)(insert-buffer-substring"*GoReformatOutput*")(goto-char(point-min))(forward-line(1-p)))(with-current-buffer"*GoReformatErrors*"(progn(goto-char(point-min))(while(re-search-forward"<standardinput>"nilt)(replace-matchfilename))(goto-char(point-min))(compilation-mode))))(setqmax-mini-window-heightold-max-mini-window-height)(delete-windows-on"*GoReformatOutput*")(kill-buffer"*GoReformatOutput*"))));;helperfunction(defungo-fix-buffer()"rungofixoncurrentbuffer"(interactive)(show-all)(shell-command-on-region(point-min)(point-max)"gotoolfix-diff"))

6. Félicitations,vousavezfini!Speedbarestfermépardéfaut-décommentez;;(speedbar1)pouractivercettefonctionnalité,ouvouspouvezl'utiliserviaM-xspeedbar.

Eclipse

Eclipseestaussiuntrèsbonoutildedéveloppement.Jevaisvousmontrercommentl'utiliserpourécriredesprogrammesGo.

Page 35: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

Figure1.1Panneauprincipald'EclipsepourdévelopperenGo

1. TéléchargezetinstallezEclipse

2. Téléchargezgoclipse

Instructionsd'installation

3. Téléchargezgocode

gocodesurGithub.

https://github.com/nsf/gocode

Page 36: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

VousdevezinstallergitsousWindows,généralementviamsysgit

Installergocodeenlignedecommandes

goget-ugithub.com/nsf/gocode

Vouspouvezl'installerdepuislessourcessivouspréférez..

4. TéléchargezetinstallezMinGW

5. Configurezlesextensions.

Windows->Préférences->Go

(1).ConfigurezlecompilateurGo

Figure1.12ParamètresGodansEclipse

Page 37: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

(2).Configurezgocode(optionnel),paramètrezlechemingocodeversl'emplacementdegocode.exe.

Figure1.13Paramètresgocode

(3).Configurezgdb(optionnell),paramètrezlechemindegdbversl'emplacementdegdb.exe.

Page 38: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

Figure1.14Paramètregdb

6. Vérifiezl'installation

CréezunnouveauprojetGoetunfichierhello.gocommesuit.

Page 39: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

Figure1.15Créezunnouveauprojetetfichier.

Testezl'installationcommesuit(Vousavezbesoindetaperlacommandedanslaconsoled'Eclipse).

Page 40: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

Figure1.16TestezGodepuisEclipse

IntelliJIDEA

LesdéveloppeursJavasontfamiliersdecetIDE.IlsupportelacolorationsyntaxiqueetlacomplétionintelligentedecodesousGo,viauneextension.

1. TéléchargezIDEA,iln'yaaucunedifférenceentreleséditionsUltimateetCommunity

Page 41: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

2. Installerl'extensionGo.ChoisissezFile-Setting-Plugins,puisBrowserrepo.

Page 42: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

3. Cherchezgolang,double-cliquezdownloadandinstalletpatientezjusqu'àlafindutéléchargement.

Page 43: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

CliquezApply,puisredémarrez.

4. MaintenantvouspouvezcréerunprojetGo.

Page 44: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

EntrezlechemindevotresdkGodansl'étapesuivante-quicorrespondàvotre$GOROOT.

Navigation

TabledesmatièresSectionprécédente:CommandesGoSectionsuivante:Résumé

Page 45: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

1.5RésuméDanscechapitre,nousavonsabordél'installationdeGosuivanttroisméthodesdifférentescomprenantcelleparlecodesource,vialepaquetstandardetdesoutilstierce.Ensuite,nousavonsvucommentconfigurerl'environnementdedéveloppementGo,couvrantprincipalementlaconfigurationdevotre$GOPATH.Aprèscela,nousavonsprésentécertainesméthodesdecompilationetdedéploiementdeprogrammesdeGo.NousavonsensuitecouvertdescommandesGo,incluantlacompilation,l'installation,leformatageetlestests.Enfin,ilexistedenombreuxoutilspuissantspourdévelopperdesprogrammesGotelsqueLiteIDE,SublimeText,Vim,Emacs,Eclipse,IntelliJIDEA,etc.VouspouvezchoisirceluidevotrepréférencepourdécouvrirlemondedulangageGo.

Navigation

TabledesmatièresSectionprécédente:OutilsdedéveloppementGoChapitresuivant:BasesdulangageGo

AppendiceARéférencesCelivreestuncondensédemonexpérienceavecGo,certainscontenusproviennentdeblogsousitesd'autresgophers.Vouspouvezlesremercier!

1. golangblog2. RussCoxblog3. gobook4. golangtutorials5. de6. GoProgrammingLanguage7. NetworkprogrammingwithGo

Page 46: 1 Configuration de votre environnement de développement Go · de types très expressif et léger, un modèle de concurrence natif, et un ramasse-miettes géré strictement. Durant

8. setup-the-rails-application-for-internationalization9. TheCross-SiteScripting(XSS)FAQ