Funktionszeiger in Go
- Deklaration von Zeigern in Go
- Initialisieren Sie einen Zeiger in Go
- Verwenden Sie den nicht initialisierten Zeiger in Go
-
Verwenden Sie die Kurzschrift
:=
Syntax für Zeiger in Go - Ändern Sie die Werte einer Variablen mit einem Zeiger in Go
-
Erstellen Sie Zeiger mit der Funktion
new()
in Go - Übergeben Sie einen Zeiger als Argument an eine Funktion in Go
- Übergeben Sie eine Adresse einer Variablen als Argument an eine Funktion in Go
- Gibt einen Zeiger von einer Funktion in Go zurück
Ein Zeiger in der Go-Sprache ist eine Spezialvariable, die verwendet wird, um die Speicheradressen anderer Variablen und Punkte zu speichern, an denen sich der Speicher befindet. Auf den dort gespeicherten Wert kann ebenfalls zugegriffen werden.
Deklaration von Zeigern in Go
var pointer_name *Data_Type
In Funktionszeigern verwendete Operatoren
*
- Es ist ein Dereferenzierungsoperator, der eine Zeigervariable deklariert. Auf den Wert, der an der dereferenzierten Adresse gespeichert ist, kann damit zugegriffen werden.&
- Dies ist ein Adressoperator, der verwendet wird, um die Adresse einer Variablen anzugeben.
Initialisieren Sie einen Zeiger in Go
package main
import "fmt"
func main() {
var myVariable int = 2
var myPointer *int
myPointer = &myVariable
fmt.Println("The value stored in 'myVariable' = ", myVariable)
fmt.Println("The address of 'myVariable' = ", &myVariable)
fmt.Println("The value stored in 'myPointer' = ", myPointer)
fmt.Println("The value pointed by 'myPointer' after dereferencing = ", *myPointer)
}
Ausgang:
The value stored in 'myVariable' = 2
The address of 'myVariable' = 0xc000090020
The value stored in 'myPointer' = 0xc000090020.
The value pointed by 'myPointer' after dereferencing = 2
Beachten Sie, dass der in der Variablen myPointer
gespeicherte Wert die Adresse der Variablen myVariable
ist.
Verwenden Sie den nicht initialisierten Zeiger in Go
package main
import "fmt"
func main() {
var myPointer *int
fmt.Println("The value stored in 'myPointer' = ", myPointer)
}
Ausgang:
The value stored in 'myPointer' = <nil>
Beachten Sie, dass ein nicht initialisierter Zeiger standardmäßig den Wert nil
hat.
Verwenden Sie die Kurzschrift :=
Syntax für Zeiger in Go
package main
import "fmt"
func main() {
myVariable := 2
myPointer := &myVariable
fmt.Println("The value stored in 'myVariable' = ", myVariable)
fmt.Println("The address of 'myVariable' = ", &myVariable)
fmt.Println("The value stored in 'myPointer' = ", myPointer)
fmt.Println("The value pointed by 'myPointer' after dereferencing = ", *myPointer)
}
Ausgang:
The value stored in 'myVariable' = 2
The address of 'myVariable' = 0xc000090020
The value stored in 'myPointer' = 0xc000090020
The value pointed by 'myPointer' after dereferencing = 2
Beachten Sie, dass Sie, wenn Sie den Datentyp mit der Zeigerdeklaration angegeben haben, den Zeiger nur verwenden können, um die Speicheradresse der angegebenen Datentypvariablen zu verarbeiten.
Der Operator :=
erkennt automatisch den Datentyp und stellt sicher, dass der erzeugte Zeiger denselben Datentyp verarbeiten kann.
Ändern Sie die Werte einer Variablen mit einem Zeiger in Go
package main
import "fmt"
func main() {
myVariable := 2
myPointer := &myVariable
fmt.Println("The value stored in 'myVariable' = ", myVariable)
fmt.Println("The address of 'myVariable' = ", &myVariable)
fmt.Println("The value stored in 'myPointer' = ", myPointer)
fmt.Println("The value pointed by 'myPointer' after dereferencing = ", *myPointer)
*myPointer = 5
fmt.Println("The updated value pointed by 'myPointer' after dereferencing = ", *myPointer)
fmt.Println("The updated value stored in 'myVariable' = ", myVariable)
}
Ausgang:
The value stored in 'myVariable' = 2
The address of 'myVariable' = 0xc000016058
The value stored in 'myPointer' = 0xc000016058
The value pointed by 'myPointer' after dereferencing = 2
The updated value pointed by 'myPointer' after dereferencing = 5
The updated value stored in 'myVariable' = 5
Beachten Sie, dass Sie den Wert des Zeigers ändern können, anstatt der Variablen einen neuen Wert zuzuweisen. Der mit einem Zeiger geänderte Wert spiegelt sich auch im ursprünglichen Wert wider.
Erstellen Sie Zeiger mit der Funktion new()
in Go
package main
import "fmt"
func main() {
var myPointer = new(int)
*myPointer = 2
fmt.Println("The value stored in 'myPointer' = ", myPointer)
fmt.Println("The value pointed by 'myPointer' after dereferencing = ", *myPointer)
}
Ausgang:
The value stored in 'myPointer' = 0xc000016058
The value pointed by 'myPointer' after dereferencing = 2
Beachten Sie, dass Sie mit der Funktion new()
direkt einen Zeiger auf eine Ganzzahl erstellen können.
Übergeben Sie einen Zeiger als Argument an eine Funktion in Go
package main
import "fmt"
func myFunction(myVariable *int) {
*myVariable = 5
}
func main() {
var myVariable = 2
fmt.Printf("The value of myVariable before function call is: %d\n", myVariable)
var myPointer *int = &myVariable
myFunction(myPointer)
fmt.Printf("The value of myVariable after function call is: %d\n", myVariable)
}
Ausgang:
The value of myVariable before function call is: 2
The value of myVariable after function call is: 5
Beachten Sie, dass die oben erstellte Funktion den Wert der Variablen myVariable
geändert hat. Der in der Funktion geänderte Wert wird außerhalb der Funktion widergespiegelt, da der Zeiger direkt auf den Speicherort verweist, an dem die Variable gespeichert ist.
Übergeben Sie eine Adresse einer Variablen als Argument an eine Funktion in Go
package main
import "fmt"
func myFunction(myVariable *int) {
*myVariable = 5
}
func main() {
var myVariable = 2
fmt.Printf("The value of myVariable before function call is: %d\n", myVariable)
myFunction(&myVariable)
fmt.Printf("The value of myVariable after function call is: %d\n", myVariable)
}
Ausgang:
The value of myVariable before function call is: 2
The value of myVariable after function call is: 5
Beachten Sie, dass die oben erstellte Funktion den Wert der Variablen myVariable
geändert hat. Der in der Funktion geänderte Wert wird außerhalb der Funktion widergespiegelt.
Die Änderung erfolgt an dem Speicherplatz, an dem die Variable abgelegt ist. Dies ist eine alternative Methode zum Übergeben eines Zeigers an eine Funktion.
Gibt einen Zeiger von einer Funktion in Go zurück
package main
import "fmt"
func main() {
displayText := display()
fmt.Println("Hello,", *displayText)
}
func display() *string {
myMessage := "World!"
return &myMessage
}
Ausgang:
Hello, World!
Beachten Sie, dass die oben erstellte Funktion einen Zeiger zurückgibt, der auf die Zeichenfolge myMessage
zeigt. Der Wert wird dann in der Funktion main
dereferenziert.
Musfirah is a student of computer science from the best university in Pakistan. She has a knack for programming and everything related. She is a tech geek who loves to help people as much as possible.
LinkedIn