Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Ako používať ukazovatele v Golangu [Kompletný návod]

Ukazovatele v Go sú výkonným nástrojom na správu pamäte a manipuláciu s údajmi. Poskytujú spôsob, ako priamo odkazovať na pamäťovú adresu premennej, čo umožňuje efektívny prístup a manipuláciu s dátovými štruktúrami.

Čo je ukazovateľ?

V Go je ukazovateľ premenná, ktorá ukladá adresu inej premennej. Adresa je jedinečné miesto v pamäti, kde je premenná uložená. Ukazovatele sa vytvárajú pomocou operátora `&`, ktorý vracia adresu premennej.

Povedzme napríklad, že máme premennú „číslo“ typu „int“. Pomocou operátora „&“ môžeme vytvoriť ukazovateľ na „číslo“:

``` ísť

číslo :=10

ukazovateľ :=&číslo

```

Premenná `pointer` teraz ukladá pamäťovú adresu premennej `number`.

Dereferencovanie ukazovateľa

Na prístup k hodnote ukazovateľa môžeme použiť operátor `*`. Operátor `*` dereferencuje ukazovateľ a vráti hodnotu uloženú na adrese pamäte, ktorú ukazovateľ obsahuje.

V našom príklade môžeme dereferencovať premennú „ukazovateľ“ a získať tak prístup k hodnote premennej „číslo“:

``` ísť

dereferencedNumber :=*ukazovateľ

```

Premenná „dereferencedNumber“ teraz ukladá hodnotu premennej „number“, ktorá je 10.

Aritmetika ukazovateľa

Ukazovatele možno použiť aj na vykonávanie aritmetiky ukazovateľov. Aritmetika ukazovateľa je proces pridávania alebo odčítania celých čísel od ukazovateľa na zmenu adresy pamäte, na ktorú odkazuje.

Povedzme napríklad, že máme pole celých čísel s názvom `arr` a chceme iterovať cez prvky poľa. Operátor `+` môžeme použiť na pridanie celého čísla do ukazovateľa, aby sme sa presunuli na ďalší prvok poľa:

``` ísť

arr :=[5]int{1, 2, 3, 4, 5}

// Inicializuje ukazovateľ na prvý prvok poľa

ukazovateľ :=&arr[0]

// Iterácia cez pole pomocou aritmetiky ukazovateľa

pre i:=0; i // Dereferencujte ukazovateľ, aby ste získali hodnotu na aktuálnom indexe

hodnota :=*ukazovateľ

// Vytlačí hodnotu

fmt.Println(hodnota)

// Zvýšením ukazovateľa sa presuniete na ďalší prvok poľa

ukazovateľ++

}

```

V tomto príklade je ukazovateľ „ukazovateľ“ pôvodne nastavený na adresu prvého prvku poľa. Potom cyklus „for“ iteruje cez pole, pričom pri každej iterácii dereferencuje „ukazovateľ“, aby získal hodnotu aktuálneho prvku. "Ukazovateľ" sa potom zvýši, aby sa presunul na ďalší prvok poľa.

Odovzdávanie ukazovateľov funkciám

Ukazovatele môžu byť odovzdané ako argumenty funkciám. To umožňuje funkciám priamo manipulovať s pamäťovou adresou premenných, namiesto vytvárania kópie premennej.

Povedzme napríklad, že máme funkciu s názvom „inkrement“, ktorá zvyšuje hodnotu celého čísla. Ukazovateľ na celé číslo môžeme odovzdať ako argument funkcii `increment`, čo umožňuje funkcii priamo upraviť hodnotu celého čísla:

``` ísť

func increment(ptr *int) {

// Dereferencovanie ukazovateľa na získanie hodnoty na adrese pamäte

hodnota :=*ptr

// Zvýšte hodnotu

hodnota++

// Uloženie zvýšenej hodnoty späť na adresu pamäte

*ptr =hodnota

}

func main() {

// Vytvorenie celočíselnej premennej

číslo :=10

// Odovzdať ukazovateľ na premennú ako argument funkcie inkrementácie

prírastok (&číslo)

// Vytlačí zvýšenú hodnotu

fmt.Println(číslo) // Výstup:11

}

```

V tomto príklade funkcia „increment“ berie ako argument ukazovateľ na celé číslo. Funkcia dereferencuje ukazovateľ, aby získala hodnotu na adrese pamäte, inkrementuje hodnotu,

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené