Zeiger in der Sprache Go
Zeiger in Go sind leicht zu erlernen, und die Verwendung von Zeigern in Go kann einige Aufgaben einfacher machen.
Als Nächstes lernen wir Go-Zeiger Schritt für Schritt.
Wir alle wissen, dass eine Variable ein praktischer Platzhalter ist, der verwendet wird, um auf eine Computerspeicheradresse zu verweisen.
Der Adressoperator in Go ist &, und wenn er vor eine Variable gesetzt wird, gibt er die Speicheradresse dieser Variable zurück.
Das folgende Beispiel demonstriert die Adresse von Variablen im Speicher:
Beispiel
import "fmt"
func main() {
var a int = 10
fmt.Printf("Address of variable: %x\n"\n", &a )
}
Die Ausgabe beim Ausführen des obigen Codes ist:
变量的地址: 20818a220
Jetzt haben wir verstanden, was Speicheradressen sind und wie man auf sie zugreift. Als Nächstes werden wir Zeiger im Detail vorstellen.
Was ist ein Zeiger
Eine Zeigervariable zeigt auf die Speicheradresse eines Werts.
Ähnlich wie bei Variablen und Konstanten müssen Sie einen Zeiger deklarieren, bevor Sie ihn verwenden. Das Format der Zeigerdeklaration ist wie folgt:
var var_name *var-type
var-type ist der Zeigertyp, var_name ist der Name der Zeigervariable, und das *-Zeichen wird verwendet, um anzugeben, dass die Variable ein Zeiger ist. Die folgenden sind gültige Zeigerdeklarationen:
var ip *int /* 指向整型*/ var fp *float32 /* 指向浮点型 */
In diesem Beispiel ist dies ein Zeiger auf int und float32.
Verwendung von Zeigern
Ablauf der Zeigernutzung:
- Definieren Sie eine Zeigervariable.
- Weisen Sie der Zeigervariable einen Wert zu.
- Greifen Sie auf den Wert an der Adresse zu, auf die die Zeigervariable zeigt.
Setzen Sie das *-Zeichen (Präfix) vor den Zeigertyp, um den Inhalt zu erhalten, auf den der Zeiger zeigt.
Beispiel
import "fmt"
func main() {
var a int= 20 /* Eine tatsächliche Variable deklarieren */
var ip *int /* Eine Zeigervariable deklarieren */
ip = &a /* Die in der Zeigervariable gespeicherte Adresse */
fmt.Printf("Adresse der Variable a ist: %x\n\n", &a )
/* Die in der Zeigervariable gespeicherte Adresse */
fmt.Printf("In Variable ip gespeicherte Zeigeradresse: %x\n\n", ip )
/* Zeiger verwenden, um auf den Wert zuzugreifen */
fmt.Printf("Wert der *ip-Variable: %d\n\n", *ip )
}
Die Ausgabe des obigen Beispiels ist:
a 变量的地址是: 20818a220 ip 变量储存的指针地址: 20818a220 *ip 变量的值: 20
Go-Nullzeiger
Wenn ein Zeiger definiert, aber keiner Variablen zugewiesen wird, ist sein Wert nil.
Ein nil-Zeiger wird auch als Nullzeiger bezeichnet.
Konzeptionell ist nil dasselbe wie null, None, nil und NULL in anderen Sprachen, die sich alle auf Nullwerte oder leere Werte beziehen.
Eine Zeigervariable wird oft als ptr abgekürzt.
Siehe das folgende Beispiel:
Beispiel
import "fmt"
func main() {
var ptr *int
fmt.Printf(Der Wert von ptr ist: %x\n", ptr )
}
Die Ausgabe des obigen Beispiels ist:
ptr 的值为 : 0
Nullzeiger-Prüfung:
if(ptr != nil) /* ptr 不是空指针 */ if(ptr == nil) /* ptr 是空指针 */
Mehr zu Go-Zeigern
Als Nächstes stellen wir weitere Zeigeranwendungen in Go vor:
| content | Beschreibung |
|---|---|
| Go-Array von Zeigern | Sie können ein Array von Zeigern definieren, um Adressen zu speichern. |
| Go-Zeiger auf Zeiger | Go unterstützt Zeiger auf Zeiger. |
| Go: Übergeben von Zeigerparametern an Funktionen | Durch die Übergabe von Parametern per Referenz oder Adresse können Sie deren Werte während Funktionsaufrufen ändern. |