Site Overlay

Dit første program

Traditionelt kaldes det første program, du skriver i et programmeringssprog, et “Hello World”-program – et program, der blot udsender Hello World til din terminal. Lad os skrive et ved hjælp af Go.

Først opretter vi en ny mappe, hvor vi kan gemme vores program. Opret en mappe med navnet ~/src/golang-book/chapter2. (Hvor ~ betyder din hjemmemappe) Fra terminalen kan du gøre dette ved at indtaste følgende kommandoer:

mkdir src/golang-bookmkdir src/golang-book/chapter2

Ved hjælp af din teksteditor indtaster du følgende:

mkdir src/golang-bookmkdir src/golang-book/chapter2

package mainimport "fmt"// this is a commentfunc main() { fmt.Println("Hello World")}

Sørg for, at din fil er identisk med den, der er vist her, og gem den som main.go i den mappe, vi lige har oprettet. Åbn en ny terminal, og indtast følgende:

cd src/golang-book/chapter2go run main.go

Du bør se Hello World blive vist i din terminal. Kommandoen go run tager de efterfølgende filer (adskilt af mellemrum), kompilerer dem til en eksekverbar fil, der gemmes i en midlertidig mappe, og kører derefter programmet. Hvis du ikke så Hello World blive vist, kan du have lavet en fejl, da du indtastede programmet. Go-kompileren vil give dig hints om, hvor fejlen ligger. Som de fleste compilere er Go-compileren ekstremt pedantisk og har ingen tolerance over for fejl.

Hvordan man læser et Go-program

Lad os se nærmere på dette program. Go-programmer læses fra top til bund, fra venstre til højre. (som en bog) I den første linje står der dette:

package main

Dette er kendt som en “pakkedeklaration”. Ethvert Go-program skal starte med en pakkedeklaration. Pakker er Go’s måde at organisere og genbruge kode på. Der er to typer Go-programmer: eksekverbare programmer og biblioteker. Eksekverbare programmer er den slags programmer, som vi kan køre direkte fra terminalen. (i Windows slutter de med .exe) Biblioteker er samlinger af kode, som vi pakker sammen, så vi kan bruge dem i andre programmer. Vi vil udforske biblioteker mere detaljeret senere, for nu skal du bare sørge for at inkludere denne linje i ethvert program, du skriver.

Den næste linje er en tom linje. Computere repræsenterer newlines med et særligt tegn (eller flere tegn). Newlines, mellemrum og tabulatorer er kendt som whitespace (fordi man ikke kan se dem). Go er for det meste ligeglad med whitespace, vi bruger det for at gøre programmerne lettere at læse. (Du kunne fjerne denne linje, og programmet ville opføre sig på nøjagtig samme måde)

Så ser vi dette:

import "fmt"

Nøgleordet import er den måde, hvorpå vi inkluderer kode fra andre pakker til brug i vores program. Pakken fmt (forkortelse for format) implementerer formatering for input og output. I betragtning af det, vi lige har lært om pakker, hvad tror du så, at fmt-pakkens filer ville indeholde øverst i dem?

Bemærk, at fmt ovenfor er omgivet af dobbelte anførselstegn. Brugen af dobbelte anførselstegn på denne måde er kendt som et “string literal”, som er en type “udtryk”. I Go repræsenterer strenge en sekvens af tegn (bogstaver, tal, symboler, …) af en bestemt længde. Strings beskrives mere detaljeret i næste kapitel, men indtil videre er det vigtigste at huske på, at et indledende "-tegn til sidst skal efterfølges af et andet "-tegn, og at alt mellem de to er inkluderet i strengen. (Selve "-tegnet er ikke en del af strengen)

Den linje, der starter med //, er kendt som en kommentar. Kommentarer ignoreres af Go-kompileren og er der for din egen skyld (eller for den, der samler kildekoden til dit program op). Go understøtter to forskellige stilarter for kommentarer: //-kommentarer, hvor al tekst mellem // og slutningen af linjen er en del af kommentaren, og /* */-kommentarer, hvor alt mellem *s er en del af kommentaren. (Og kan omfatte flere linjer)

Efter dette ser du en funktionsdeklaration:

func main() { fmt.Println("Hello World")}

Funktioner er byggestenene i et Go-program. De har indgange, udgange og en række trin kaldet statements, som udføres i rækkefølge. Alle funktioner starter med nøgleordet func efterfulgt af funktionens navn (main i dette tilfælde), en liste med nul eller flere “parametre” omgivet af parenteser, en valgfri returtype og en “krop”, som er omgivet af parenteser. Denne funktion har ingen parametre, returnerer ikke noget og har kun ét statement. Navnet main er specielt, fordi det er den funktion, der bliver kaldt, når du udfører programmet.

Den sidste del af vores program er denne linje:

 fmt.Println("Hello World")

Denne erklæring består af tre komponenter. Først får vi adgang til en anden funktion inde i fmt-pakken, der hedder Println (det er fmt.Println-delen, Println betyder Print Line). Derefter opretter vi en ny streng, der indeholder Hello World, og påkalder (også kendt som call eller execute) denne funktion med strengen som det første og eneste argument.

På dette tidspunkt har vi allerede set en masse ny terminologi, og du er måske lidt overvældet. Nogle gange er det nyttigt at læse dit program højt med vilje. En oplæsning af det program, vi lige har skrevet, kunne se således ud:

Opret et nyt eksekverbart program, som refererer til biblioteket fmt og indeholder en funktion kaldet main. Denne funktion tager ingen argumenter, returnerer ikke noget og gør følgende: Tilgå Println-funktionen, der er indeholdt i fmt-pakken, og påberåbe den ved hjælp af ét argument – strengen Hello World.

Den Println-funktion udfører det egentlige arbejde i dette program. Du kan finde ud af mere om den ved at skrive følgende i din terminal:

godoc fmt Println

Du bør bl.a. se dette:

Println formats using the default formats for its operands and writes to standard output. Spaces are always added between operands and a newline is appended. It returns the number of bytes written and any write error encountered.

Go er et meget veldokumenteret programmeringssprog, men denne dokumentation kan være svær at forstå, medmindre du allerede er fortrolig med programmeringssprog. Ikke desto mindre er godoc-kommandoen yderst nyttig og et godt sted at starte, når du har et spørgsmål.

Bag til den pågældende funktion, fortæller denne dokumentation dig, at Println-funktionen vil sende det, du giver den, til standard output – et navn for output i den terminal, du arbejder i. Denne funktion er det, der får Hello World til at blive vist.

I næste kapitel vil vi udforske, hvordan Go gemmer og repræsenterer ting som Hello World ved at lære om typer.

Problemer

  • Hvad er whitespace?

  • Hvad er en kommentar? Hvad er de to måder at skrive en kommentar på?

  • Vores program begyndte med package main. Hvad ville filerne i fmt-pakken begynde med?

  • Vi brugte funktionen Println, der er defineret i fmt-pakken. Hvis vi ville bruge Exit-funktionen fra os-pakken, hvad skulle vi så gøre?

  • Modificer det program, vi skrev, så det i stedet for at udskrive Hello World udskriver Hello, my name is efterfulgt af dit navn.

← Forrige Index

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.