Golang utsetter

Golang utsetter
Utsettingsfunksjonen i go lar deg utsette utførelsen av en funksjon til den andre funksjonen kommer ut. I de fleste tilfeller bruker vi utsett nøkkelord for å utsette utførelsen av en funksjon senere i programmet for opprydding. Et eksempel vil være å lukke en fil, lukke en kanal eller lukke en mutex. Dette er ikke annerledes hvis du er kjent med endelig eller sikre på andre programmeringsspråk.

La oss bruke denne guiden for å lære å bruke utsettingsnøkkelordet i Go.

Golang utsetter nøkkelord.

For å legge til utsettelse av en funksjon, bruk utsettingsnøkkelordet etterfulgt av funksjonen eller metodenavnet. Et eksempelkode er som vist:

pakkehoved
Importer "FMT"
func main ()
fmt.Println ("Jeg kjører først")
utsetter fmt.Println ("Jeg kjører sist")
fmt.Println ("Jeg kjører andre")

I eksemplet ovenfor bruker vi utsettingsnøkkelordet til ord for å utsette funksjonens utførelse på fjerde linje. Dette betyr at denne funksjonen vil utføre sist.

Et eksempelutgang er som vist:

$ go run utsatt.gå
Jeg løper først
Jeg løper andre
Jeg løper sist

Dette betyr at metoden bare kjører etter at alle andre metoder returnerer.

Husk at funksjonen eller metoden som kalles med et utsatt nøkkelord vil kjøre så lenge de andre metodene/funksjonene kommer tilbake. Returen kan enten være gjennom panikk eller normal utførelse.

Tenk på eksemplet nedenfor der en metode kalles til tross for panikk.

pakkehoved
Importer "FMT"
func main ()
utsetter fmt.Println ("Jeg løper")
Panikk ("Panikk!!!")
fmt.Println ("Jeg løper ikke")

Ovennevnte kode skal returnere:

$ go run utsatt.gå
jeg løper
Panikk: Panikk!!!
Goroutine 1 [Løping]:
hoved-.hoved()
+0x73
Avslutt status 2

Utførelsesrekkefølge

Argumentene for en utsatt funksjon evalueres umiddelbart, selv om utførelsen er forsinket til den omkringliggende funksjonen kommer tilbake.

Hvis du har mer enn en utsatt funksjonssamtale, organiserer du dem i en liste og utfører dem i siste-in-første-ut-ordre (LIFO).

Vi kan illustrere dette ved hjelp av en enkel for loop som vist nedenfor:

pakkehoved
Importer "FMT"
func main ()
fmt.Println ("Jeg begynner")
for i: = 1; Jeg <= 5; i++
utsetter fmt.Println (i)

fmt.Println ("I Second")

Vi kan se utførelsesrekkefølgen i utgangen:

jeg begynner
Jeg andre
5
4
3
2
1

Bruk utsettingsfunksjon for å returnere en verdi

Du kan bruke en anonym utsatt funksjon for å få tilgang til og endre returparametrene til den omkringliggende funksjonen.

Et eksempel er som vist:

func si () (str string)
utsette func ()
str = "farvel"
()
Returner "Hei!""

I dette eksemplet returnerer funksjonen strengen "farvel" i stedet for "hei".

Utsetter praktisk bruk - Lukk fil

Et bruk av en virkelig verden av utsettingsnøkkelordet er å lukke en fil. Ta eksemplet vist nedenfor:

Fil, feil: = OS.Åpne ("Hei.tekst")
Hvis feil != nil
Logg.Fatal (feil)

utsett fil.Lukk()
Skanner: = Bufio.Newscanner (fil)
skanner.Split (Bufio.Skanneord)
for skanner.Skann ()
fmt.Println (skanner.Tekst())

Hvis feil: = skanner.Feil (); feil != nil
Logg.Fatal (feil)

Vi åpner filen for å lese ved hjelp av Open () -metoden i eksemplet over. Vi bruker deretter utsatt nøkkelord for å utsette den nære operasjonen etter at leseoperasjonen er fullført.

Konklusjon

I denne artikkelen diskuterer vi hvordan for å utsette nøkkelordet fungerer og hvordan vi kan bruke det til å utsette utførelsen av en funksjon.

Takk for at du leste!!