Wskaźniki Golang

Wskaźniki Golang
Wskaźnik programowania odnosi się do zmiennej używanej do przechowywania adresu pamięci innej zmiennej w systemie. Adres pamięci zmiennej wyraża się w formacie szesnastkowym, zaczynając od 0x.

Wskaźniki są przydatne, ponieważ pozwalają nam przechowywać pamięć adresu, w którym dane przechowywane przez zmienną są przechowywane. Korzystając z wskaźników, określamy wartość przechowywaną przez zmienną pod tym adresem pamięci.

W tym artykule przyjaznym dla początkujących omówimy, jak zacząć od wskazówek w języku programowania Go.

Golang deklaruje zmienną

Oświadczamy wskaźnik tak samo, jak deklarujemy normalną zmienną. Używamy jednak operatora dereferencji, aby pokazać, że zmienna utrzymuje wskaźnik.

Przed ogłoszeniem zmiennej istnieją dwóch operatorów, z którymi musimy się zapoznać:

  1. * - Asterisk w Deklaracji Wskaźnika jest znana jako operator dereferencyjny. Służy do deklarowania wartości wskaźnika i dostępu do wartości przechowywanej pod określonym adresem pamięci.
  2. & - W wskaźniku operator adresu służy do dostępu do adresu pamięci zmiennej. Może również zwrócić adres zmiennej.

Poniższa składnia pokazuje, jak zadeklarować zmienną wskaźnika:

var pointer_name *data_type

Na przykład poniższy kod deklaruje zmienną wskaźnika „PTR”, która zawiera adres typów INT.

var ptr *int

Golang inicjuje wskaźnik

Możemy zainicjować wskaźnik, przydzielając adres pamięci zmiennej za pomocą operatora adresu, pokazanego powyżej.

Przykładem jest jak pokazano:

Pakiet Main
importować „fmt”
func main ()
// deklaruj zmienną
X: = 100
// Deklaruj i zainicjuj wskaźnik
var ptr *int = & x
// Drukuj adres
fmt.Println (ptr)

W powyższym przykładzie zaczynamy od ogłoszenia zmiennej trzymającej wartość liczb całkowitą. Następnie tworzymy wskaźnik zawierający adres pamięci zmiennej.

Po wydrukowaniu adresu powinniśmy uzyskać przykładowe wyjście, jak pokazano:

$ idź wskaźnik run.Iść
0xc000018098

Możemy również zadeklarować zmienną i ustawić wartość później w kodzie. Przykładem jest jak pokazano:

Pakiet Main
importować „fmt”
func main ()
// deklaruj zmienną
X: = 100
// deklaruj
var ptr *int
ptr = & x
// Drukuj adres
fmt.Println (ptr)

Tutaj deklarujemy wskaźnik, a później ustawiamy jego wartość za pomocą operatora adresu.

Golang zero wskaźnik

Jeśli zadeklarujesz wskaźnik i nie przypisujesz wartości, wskaźnik ma wartość zerową. Na przykład:

Pakiet Main
importować „fmt”
func main ()
var ptr *int
fmt.Println (ptr)

Kod powyżej zwraca zero.

Typ wskaźnika

W naszym przykładzie zadeklarowaliśmy rodzaj wskaźnika. Oznacza to, że wskaźnik może przechowywać tylko pamięć podana określonego typu danych.

Jeśli spróbujesz przechowywać adres innego typu, kompilator zwraca błąd, jak pokazano w poniższym przykładzie:

Pakiet Main
importować „fmt”
func main ()
// deklaruj zmienną
str: = "Hello"
var ptr *int
Ptr = & Str
// Drukuj adres
fmt.Println (ptr)

W powyższym przykładzie deklarujemy zmienną z typem int. Jednak przypisujemy adres typu ciągu.

Kompilator zwraca błąd jako:

.\wskaźnik.GO: 11: 6: Nie można użyć & str (type *string) jako type *int inssess

Aby tego uniknąć, możesz użyć dosłownej metody deklaracji wskaźnika. Na przykład możemy zrobić:

Pakiet Main
importować „fmt”
func main ()
str: = "Hello"
ptr: = & Str
fmt.Println (ptr)

Powyższy przykład umożliwia kompilatorowi określenie typu adresu do utrzymania w określonym wskaźniku.

Dereference Golang Wskaźnik

Aby uzyskać dostęp do wartości przechowywanej na określonym adresie, możemy użyć operatora dereferencji. Przykładowy kod jest taki jak pokazano:

Pakiet Main
importować „fmt”
func main ()
X: = 100
ptr: = & x
fmt.Println („x:”, x)
fmt.Println („Adres:”, ptr)
fmt.Println („wartość pod adresem:”, *ptr)

Powyższy kod korzysta z operatora dereferencyjnego, aby uzyskać wartość przechowywaną pod adresem posiadanym przez wskaźnik „PTR”

Powstałe wyjście to:

X: 100
Adres: 0xc000018098
Wartość pod adresem: 100

Wniosek

Ten przewodnik przechodzi przez podstawy pracy z wskaźnikami w Go. Korzystając z wskazówek, możesz uzyskać dostęp i przechowywać adres pamięci zmiennej. Możesz także użyć wskaźnika, aby uzyskać dostęp do zmiennej przechowywanej pod określonym adresem pamięci.

Dziękuje za przeczytanie!