Heim >Backend-Entwicklung >Golang >Hat Golang Hinweise?
golang hat Hinweise. Die Go-Sprache bietet Programmierern die Möglichkeit, Datenstrukturzeiger zu steuern. Ihre Unterstützung für Zeiger liegt zwischen der Java-Sprache und der C/C++-Sprache. Sie hebt weder die Fähigkeit des Codes auf, Zeiger wie Java direkt zu bedienen, noch vermeidet sie das Problem Sicherheits- und Zuverlässigkeitsprobleme, die durch den Missbrauch von Zeigern in C/C++ verursacht werden. Zeiger können in der Go-Sprache in zwei Kernkonzepte unterteilt werden: 1. Typzeiger, der die Änderung der Daten dieses Zeigertyps ermöglicht, 2. Slice, der aus dem ursprünglichen Zeiger besteht, der auf das Startelement zeigt, die Anzahl der Elemente , und die Kapazität.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, GO Version 1.18, Dell G3-Computer.
Im Gegensatz zu Programmiersprachen wie Java und .NET bietet die Go-Sprache Programmierern die Möglichkeit, Datenstrukturzeiger zu steuern, kann jedoch keine Zeigeroperationen ausführen. Mit der Go-Sprache können Sie die Datenstruktur einer bestimmten Sammlung, die Anzahl der Zuweisungen und das Speicherzugriffsmuster steuern, was für den Aufbau eines gut funktionierenden Systems sehr wichtig ist. Der Einfluss von Zeigern auf die Leistung ist offensichtlich. Wenn Sie Systemprogrammierung, Betriebssysteme oder Netzwerkanwendungen durchführen möchten, sind Zeiger ein unverzichtbarer Bestandteil.
Die Unterstützung der Go-Sprache für Zeiger liegt zwischen der Java-Sprache und der C/C++-Sprache. Sie hebt weder die Fähigkeit des Codes auf, Zeiger direkt zu bedienen, wie dies bei Java der Fall ist, noch vermeidet sie den Missbrauch von Zeigern in C/C++, was zur Sicherheit führt und Zuverlässigkeitsprobleme.
Zeiger (Zeiger) können in der Go-Sprache in zwei Kernkonzepte unterteilt werden:
Zeigertyp, der die Änderung von Daten dieses Zeigertyps ermöglicht, um Daten direkt zu übertragen, ohne die Daten zu kopieren. , Typzeiger können keine Offset- und Operationen ausführen.
Ein Slice besteht aus einem Rohzeiger auf das Startelement, der Anzahl der Elemente und der Kapazität.
Die Zeigertypvariablen der Go-Sprache profitieren von solchen Einschränkungen und Aufteilungen und weisen die Merkmale eines effizienten Zeigerzugriffs ohne Zeigerversatz auf, wodurch das Problem der illegalen Änderung kritischer Daten vermieden wird. Gleichzeitig erleichtert die Garbage Collection das Abrufen und Recyceln von Zeigern, die nicht versetzt werden.
Slices haben leistungsfähigere Funktionen als rohe Zeiger und sind sicherer. Wenn ein Slice außerhalb der Grenzen liegt, meldet die Laufzeit einen Absturz und öffnet den Stapel, während der ursprüngliche Zeiger nur zusammenbricht.
Was sind Zeiger in Golang?
Ein Zeiger ist eine Variable, deren Wert die Adresse einer anderen Variablen ist, also die direkte Adresse eines Speicherorts. Wie eine Variable oder Konstante muss ein Zeiger deklariert werden, bevor er zum Speichern der Adresse einer Variablen verwendet werden kann. Die allgemeine Form der Zeigervariablendeklaration lautet:
var var-name *var-type
Hier ist var-type der Basistyp des Zeigers; es muss ein gültiger Go-Datentyp sein und var-name ist der Name der Zeigervariablen. Das zur Deklaration eines Zeigers verwendete Sternchen (*) ist dasselbe wie das zur Multiplikation verwendete Sternchen. In dieser Anweisung wird jedoch das Sternchen (*) verwendet, um die Variable als Zeiger zu kennzeichnen. Das Folgende ist eine gültige Zeigerdeklaration:
var ip *int /* pointer to an integer */ var fp *float32 /* pointer to a float */
Der tatsächliche Datentyp des Werts aller Zeiger (ob Ganzzahl, Gleitkomma oder ein anderer Datentyp) ist derselbe, nämlich eine lange Hexadezimalzahl, die die Speicheradresse darstellt. Der einzige Unterschied zwischen Zeigern unterschiedlicher Datentypen besteht im Datentyp der Variablen oder Konstanten, auf die der Zeiger zeigt. [Verwandte Empfehlungen: Go-Video-Tutorial]
Wie verwende ich Zeiger?
Es gibt mehrere wichtige Operationen, die sehr häufig mithilfe von Zeigern implementiert werden.
Definieren Sie eine Zeigervariable.
Weisen Sie einem Zeiger die Adresse einer Variablen zu code>*, um den Wert der Variablen zurückzugeben, die sich an der durch den Operanden angegebenen Adresse befindet. Das folgende Beispiel verwendet diese Operationen:
package main import "fmt" func main() { var a int= 20 /* actual variable declaration */ var ip *int /* pointer variable declaration */ ip = &a /* store address of a in pointer variable*/ fmt.Printf("Address of a variable: %x\n", &a ) /* address stored in pointer variable */ fmt.Printf("Address stored in ip variable: %x\n", ip ) /* access the value using the pointer */ fmt.Printf("Value of *ip variable: %d\n", *ip ) }
Address of var variable: 10328000 Address stored in ip variable: 10328000 Value of *ip variable: 20
*
来返回位于操作数指定的地址的变量的值。下面的例子使用这些操作:
package main import "fmt" func main() { var ptr *int fmt.Printf("The value of ptr is : %x\n", ptr ) }
当上面的代码编译和执行时,它产生结果如下:
The value of ptr is 0
在Go语言中的nil指针
Go编译器为指针变量分配一个Nil
值,以防指针没有确切的地址分配。这是在变量声明的时候完成的。指定为nil
值的指针称为nil指针。
nil
指针是在几个标准库中定义的值为零的常量。参考下面的程序:
if(ptr != nil) /* succeeds if p is not nil */ if(ptr == nil) /* succeeds if p is null */
当上面的代码编译和执行时,它产生结果如下:
rrreee在大多数操作系统上,程序不允许访问地址0
处的内存,因为该内存是由操作系统保留的。 然而,存储器地址0
具有特殊意义;它表示指针不打算指向可访问的存储器位置。但是按照惯例,如果指针包含nil
(零)值,则假设它不指向任何东西。
要检查是否为nil
指针,可以使用if
Nil
-Wert für den Fall, dass dem Zeiger keine genaue Adresse zugewiesen ist. Dies geschieht, wenn die Variable deklariert wird. Ein als nil
-Wert angegebener Zeiger wird als Nullzeiger bezeichnet. Wenn der obige Code kompiliert und ausgeführt wird, erzeugt er das folgende Ergebnis: 🎜rrreee🎜 Auf den meisten Betriebssystemen ist es dem Programm nicht gestattet, auf den Speicher an der Adresse 0
zuzugreifen > weil Dieser Speicher vom Betriebssystem reserviert ist. Die Speicheradresse 0
hat jedoch eine besondere Bedeutung; sie zeigt an, dass der Zeiger nicht auf einen zugänglichen Speicherort zeigen soll. Konventionell wird jedoch angenommen, dass ein Zeiger, wenn er einen Nullwert enthält, auf nichts zeigt. 🎜🎜Um zu überprüfen, ob es sich um einen nil
-Zeiger handelt, können Sie die if
-Anweisung verwenden, wie unten gezeigt: 🎜rrreee🎜Weitere Programmierkenntnisse finden Sie unter: 🎜Programmierung Videos🎜! ! 🎜Das obige ist der detaillierte Inhalt vonHat Golang Hinweise?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!