1 Configuration de votre environnement de développement Go · de types très expressif et léger,...

46
1.Configuration de votre environnement de développement Go 1.1. Installation 1.2. $GOPATH et workspace 1.3. Commandes Go 1.4. Outils de développement Go 1.5. Résumé Appendice A Références 1 Configuration de votre environnement de développement Go Bienvenue dans le monde de Go, commençons notre exploration! Go est un langage de progammation système concurrent à la compilation rapide et disposant d'un rammasse-miettes. Il a les avantages suivants: Compilation d'un large projet en quelques secondes. Fournit un modèle de développement facile à gérer, évitant la plupart des problèmes liés aux fichiers d'en-tête C. C'est un langage statique avec un système de types de données simple, afin que les utilisateurs n'aient pas à perdre du temps à gérer les relations entre types. Il peut-être vu comme un langage orienté-objet simplifié. Il possède un ramasse-miettes. Il fournit un support de base pour la concurrence et de la communication. Conçu pour les ordinateurs multi-core. Go est un langage compilé. Il combine l'efficacité de développement des langages interprétés ou dynamiques avec la sécurité de langues statiques. Il va être la langue de choix pour les ordinateurs modernes multi-core inter- connectés. À ces fins, il ya quelques problèmes qui doivent fondamentalement être résolu au niveau de ce langage, comme un système

Transcript of 1 Configuration de votre environnement de développement Go · de types très expressif et léger,...

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