Golang -pekere

Golang -pekere
En peker i programmering refererer til variabelen som brukes til å lagre minneadresse til en annen variabel i systemet. Hukommelsesadressen til variabel er uttrykt i heksadesimal format som starter med 0x.

Pekere er nyttige da de lar oss lagre minnet om en adresse der dataene som holdes av en variabel lagres. Ved hjelp av pekere bestemmer vi verdien som er lagret av variabelen på den minneadressen.

I denne nybegynnervennlige artikkelen vil vi diskutere hvordan vi kommer i gang med pekere i Go -programmeringsspråket.

Golang erklærer variabel

Vi erklærer en peker den samme som vi erklærer en normal variabel. Imidlertid bruker vi derferensoperatøren for å vise at variabelen holder en peker.

Før du erklærer en variabel, er det to operatører vi trenger å være kjent med:

  1. * - Stjerne i pekerdeklarasjonen er kjent som Dereferencing Operator. Det brukes til å erklære en pekerverdi og få tilgang til verdien som er lagret på en bestemt minneadresse.
  2. & - i pekeren brukes adresseoperatøren for å få tilgang til minneadressen til en variabel. Det kan også returnere adressen til variabelen.

Syntaksen nedenfor viser hvordan du erklærer en pekervariabel:

var pointer_name *data_type

For eksempel er koden nedenfor erklærer en pekervariabel "PTR" som holder adressen til int -typer.

var ptr *int

Golang initialiserer pekeren

Vi kan initialisere en peker ved å tildele minneadressen til en variabel ved hjelp av adresseoperatøren, vist ovenfor.

Et eksempel er som vist:

pakkehoved
Importer "FMT"
func main ()
// erklære variabel
X: = 100
// erklære og initialisere pekeren
var ptr *int = & x
// Skriv ut adresse
fmt.Println (PTR)

I eksemplet over starter vi med å erklære en variabel som holder en heltallverdi. Vi oppretter deretter en peker som holder minneadressen til variabelen.

Når vi har skrevet ut adressen, bør vi få et eksempelutgang som vist:

$ go run peker.gå
0xc000018098

Vi kan også erklære en variabel og angi verdien senere i koden. Et eksempel er som vist:

pakkehoved
Importer "FMT"
func main ()
// erklære variabel
X: = 100
// erklære
var ptr *int
ptr = & x
// Skriv ut adresse
fmt.Println (PTR)

Her erklærer vi pekeren og setter senere verdien ved å bruke adresseoperatøren.

Golang Nil Pointer

Hvis du erklærer en peker og ikke tildeler en verdi, har pekeren en null verdi. For eksempel:

pakkehoved
Importer "FMT"
func main ()
var ptr *int
fmt.Println (PTR)

Koden over returnerer null.

Pekertype

I vårt eksempel erklærte vi typen peker. Dette betyr at pekeren bare kan holde minnet adressert av den spesifiserte datatypen.

Hvis du prøver å lagre adressen til en annen type, returnerer kompilatoren en feil som vist i eksemplet nedenfor:

pakkehoved
Importer "FMT"
func main ()
// erklære variabel
Str: = "Hei"
var ptr *int
ptr = & str
// Skriv ut adresse
fmt.Println (PTR)

I eksemplet over erklærer vi en variabel med type int. Vi tildeler imidlertid en adresse på en strengtype.

Kompilatoren returnerer en feil som:

.\ peker.GO: 11: 6: Kan ikke bruke & str (type *streng) som type *int i oppgaven

For å unngå dette, kan du bruke peker bokstavelig erklæringsmåte. For eksempel kan vi gjøre:

pakkehoved
Importer "FMT"
func main ()
Str: = "Hei"
PTR: = & Str
fmt.Println (PTR)

Eksemplet ovenfor lar kompilatoren bestemme hvilken type adresse som skal holdes i den spesifiserte pekeren.

Golang Pointer Dereference

For å få tilgang til verdien som er lagret på en bestemt adresse, kan vi bruke Dereferencing Operator. Et eksempelkode er som vist:

pakkehoved
Importer "FMT"
func main ()
X: = 100
PTR: = & x
fmt.Println ("x:", x)
fmt.Println ("Adresse:", PTR)
fmt.Println ("Verdi på adresse:", *PTR)

Ovennevnte kode bruker derferensoperatøren for å få verdien lagret på adressen som er holdt av pekeren “PTR”

Den resulterende utgangen er som:

x: 100
Adresse: 0xc000018098
Verdi på adresse: 100

Konklusjon

Denne guiden leder deg gjennom det grunnleggende om å jobbe med pekere i Go. Ved hjelp av pekere kan du få tilgang til og lagre minneadressen til en variabel. Du kan også bruke pekeren for å få tilgang til variabelen som er lagret på en bestemt minneadresse.

Takk for at du leste!