Golang leste fra stdin

Golang leste fra stdin
På de fleste programmeringsspråk har du muligheten til å lese innspill fra konsollen og lagre den til en variabel. Go -programmering blir ikke etterlatt i den forbindelse. I denne artikkelen lærer vi hvordan du kan lese innspill fra konsollen i Go -programmering.

Påkrevd import

For å lese innspill fra konsollen, må vi importere noen få pakker. Den første er Bufio -pakken, FMT -pakken og OS -pakken.

Bufio -pakken lar deg lese karakterer fra stdin på en gang. FMT-pakken brukes til å håndtere I/O-operasjoner, og OS gir systemfunksjonaliteter på lavt nivå.

Følgende utdrag importerer alle nødvendige pakker:

import (
"Bufio"
"FMT"
"OS"
)

Golang leste karakter

La oss se hvordan du kan lese en enkelt Unicode -karakter fra STDIN på GO -språket. Tenk på følgende kode som er oppgitt:

pakkehoved
import (
"Bufio"
"FMT"
"Logg"
"OS"
)
func main ()
fmt.Println ("Type A -tegn>")
Leser: = Bufio.NewReader (OS.Stdin)
char, _, feil: = leser.Readrune ()
Hvis feil != nil
Logg.Fatal (feil)

fmt.Printf ("Unicode char: %u \ n", char)

I forrige eksempel oppretter vi en ny leser fra Bufio -pakken og passerer OS.Stdin som parameter.

Vi leste deretter karakteren og feilen fra leseren. Legg merke til at vi bruker Readrune () -metoden for å returnere en Unicode -karakter.

Den forrige koden skal returnere en utdata som vist:

Skriv inn et tegn>
EN
Unicode Char: U+0041

Utgangen ovenfor viser Unicode -kodepunktet for karakteren “a.”

Golang leste Multi-Line

Hvis du vil lese flere linjer fra konsollen, kan du bruke ReadString () -metoden i stedet for readrune, som vist ovenfor.

Et kodeeksempel er gitt nedenfor:

pakkehoved
import (
"Bufio"
"FMT"
"Logg"
"OS"
)
func main ()
fmt.Println ("Enter en streng")
Leser: = Bufio.NewReader (OS.Stdin)
Str, feil: = leser.ReadString ('\ n')
Hvis feil != nil
Logg.Fatal (feil)

fmt.Printf ("%s", str)

I dette eksemplet vil leseren kontinuerlig lese innspillet fra brukeren til den møter den spesifiserte avgrenseren. I vårt eksempel, hvis leseren møter en ny-linjekarakter, slutter det å lese.

Hvis vi kjører koden, bør vi få en utdata som:

Skriv inn en streng
..
hei verden fra stdin

Golang -skanner

En annen metode vi kan bruke for å godta innspill fra stdin er skannermetoden. NewsCanner () -metoden er veldig nyttig når du leser en fil. Vi kan imidlertid bruke den til å lese fra stdin.

Et kodeeksempel vises nedenfor:

pakkehoved
import (
"Bufio"
"FMT"
"OS"
)
func main ()
Skanner: = Bufio.Newscanner ((OS.Stdin))
input: = make ([] streng, 0)
for
fmt.Println ("Type her:")
skanner.Skanne ()
txt: = skanner.Tekst()
input = vedlegg (input, txt)
gå i stykker

fmt.Println (input)

Den forrige koden leser inngangen fra brukeren og legger den til inngangsskiven. Du kan utvide den forrige koden for kontinuerlig å lese inngangen og avslutte når det ikke er gitt noen verdi.

Konklusjon

Som sett fra denne guiden, gir Go -programmering oss flere måter å lese innspill fra STDIN. Du kan velge hvilken som helst metode som passer dine behov. Vi håper du fant denne artikkelen nyttig. Sjekk ut andre Linux -hint -artikler for flere tips og opplæringsprogrammer.