Site Overlay

Ditt första program

Traditionellt sett kallas det första programmet du skriver i ett programmeringsspråk för ett ”Hello World”-program – ett program som helt enkelt matar ut Hello World till din terminal. Låt oss skriva ett med Go.

Skapa först en ny mapp där vi kan lagra vårt program. Skapa en mapp med namnet ~/src/golang-book/chapter2. (Där ~ står för din hemkatalog) Från terminalen kan du göra detta genom att skriva in följande kommandon:

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

Med hjälp av din textredigerare skriver du in följande:

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

Se till att din fil är identisk med den som visas här och spara den som main.go i den mapp vi just skapat. Öppna en ny terminal och skriv in följande:

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

Du bör se Hello World i din terminal. Kommandot go run tar de efterföljande filerna (separerade med mellanslag), kompilerar dem till en körbar fil som sparas i en temporär katalog och kör sedan programmet. Om du inte ser Hello World visas kan du ha gjort ett misstag när du skrev in programmet. Go-kompilatorn kommer att ge dig tips om var misstaget ligger. Som de flesta kompilatorer är Go-kompilatorn extremt pedantisk och har ingen tolerans för misstag.

Hur man läser ett Go-program

Låt oss titta närmare på det här programmet. Go-program läses uppifrån och ner, från vänster till höger. (som en bok) På den första raden står det så här:

package main

Detta är känt som en ”paketdeklaration”. Varje Go-program måste börja med en paketdeklaration. Paket är Go:s sätt att organisera och återanvända kod. Det finns två typer av Go-program: körbara program och bibliotek. Exekverbara program är den typ av program som vi kan köra direkt från terminalen. (I Windows slutar de med .exe) Bibliotek är samlingar av kod som vi paketerar ihop så att vi kan använda dem i andra program. Vi kommer att utforska bibliotek mer i detalj senare, för tillfället är det bara att se till att inkludera den här raden i alla program du skriver.

Nästa rad är en tom rad. Datorer representerar nya rader med ett specialtecken (eller flera tecken). Nya rader, mellanslag och tabulatorer kallas whitespace (eftersom du inte kan se dem). Go bryr sig för det mesta inte om whitespace, vi använder det för att göra programmen lättare att läsa. (Du skulle kunna ta bort den här raden och programmet skulle bete sig på exakt samma sätt)

Därefter ser vi detta:

import "fmt"

Nyckelordet import är hur vi inkluderar kod från andra paket för att använda med vårt program. Paketet fmt (förkortning för format) implementerar formatering för in- och utdata. Med tanke på vad vi just lärt oss om paket vad tror du att fmt-paketets filer skulle innehålla högst upp i dem?

Bemärk att fmt ovan är omgiven av dubbla citationstecken. Användningen av dubbla citattecken på det här sättet är känd som en ”string literal” som är en typ av ”uttryck”. I Go representerar strängar en sekvens av tecken (bokstäver, siffror, symboler, …) med en bestämd längd. Strängar beskrivs mer ingående i nästa kapitel, men för tillfället är det viktiga att komma ihåg att ett inledande "-tecken så småningom måste följas av ett annat "-tecken och att allt som ligger mellan de två ingår i strängen. (Själva "-tecknet ingår inte i strängen)

Raden som börjar med // kallas för en kommentar. Kommentarer ignoreras av Go-kompilatorn och finns där för din egen skull (eller för den som hämtar källkoden till ditt program). Go stöder två olika stilar för kommentarer: //-kommentarer där all text mellan // och radens slut är en del av kommentaren och /* */-kommentarer där allt mellan *s är en del av kommentaren. (Och kan innehålla flera rader)

Efter detta ser du en funktionsdeklaration:

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

Funktioner är byggstenarna i ett Go-program. De har ingångar, utgångar och en serie steg, så kallade statements, som exekveras i tur och ordning. Alla funktioner börjar med nyckelordet func följt av funktionens namn (main i det här fallet), en lista med noll eller fler ”parametrar” som omges av parenteser, en valfri returtyp och en ”kropp” som omges av parenteser. Den här funktionen har inga parametrar, returnerar ingenting och har bara ett uttalande. Namnet main är speciellt eftersom det är den funktion som anropas när du utför programmet.

Den sista delen av vårt program är den här raden:

 fmt.Println("Hello World")

Detta uttalande består av tre komponenter. Först får vi tillgång till en annan funktion i paketet fmt som heter Println (det är delen fmt.Println, Println betyder Print Line). Sedan skapar vi en ny sträng som innehåller Hello World och åberopar (även kallad call eller execute) den funktionen med strängen som första och enda argument.

I det här läget har vi redan sett en hel del ny terminologi och du kanske är lite överväldigad. Ibland kan det vara till hjälp att medvetet läsa ditt program högt. En uppläsning av det program vi just skrivit kan se ut så här:

Skapa ett nytt körbart program, som refererar till biblioteket fmt och innehåller en funktion som heter main. Den funktionen tar inga argument, returnerar ingenting och gör följande: Åtkomst till funktionen Println som finns i fmt-paketet och anropar den med ett argument – strängen Hello World.

Funktionen Println gör det verkliga arbetet i det här programmet. Du kan ta reda på mer om den genom att skriva följande i din terminal:

godoc fmt Println

Av bland annat detta bör du se:

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 är ett mycket väldokumenterat programmeringsspråk, men denna dokumentation kan vara svår att förstå om du inte redan är bekant med programmeringsspråk. Trots detta är kommandot godoc mycket användbart och ett bra ställe att börja när du har en fråga.

Tillbaka till den aktuella funktionen, den här dokumentationen talar om för dig att funktionen Println kommer att skicka vad du än ger den till standardutgången – ett namn för utgången i terminalen som du arbetar i. Den här funktionen är det som gör att Hello World visas.

I nästa kapitel ska vi utforska hur Go lagrar och representerar saker som Hello World genom att lära oss om typer.

Problem

  • Vad är whitespace?

  • Vad är en kommentar? Vilka är de två sätten att skriva en kommentar?

  • Vårt program började med package main. Vad skulle filerna i paketet fmt börja med?

  • Vi använde funktionen Println som definieras i paketet fmt. Om vi ville använda funktionen Exit från paketet os vad skulle vi behöva göra?

  • Modifiera programmet vi skrev så att det istället för att skriva ut Hello World skriver ut Hello, my name is följt av ditt namn.

← Föregående Index

Lämna ett svar

Din e-postadress kommer inte publiceras.