Heim  >  Artikel  >  Backend-Entwicklung  >  Verstehen Sie den Unterschied zwischen Slices und Variablen in der Go-Sprache

Verstehen Sie den Unterschied zwischen Slices und Variablen in der Go-Sprache

王林
王林Original
2024-04-02 18:42:01363Durchsuche

Slices und Variablen unterscheiden sich in der Go-Sprache: Slices sind Referenztypen und verweisen auf das zugrunde liegende Array, während Variablen Werte direkt speichern. Durch die Zuweisung zu einer Variablen wird eine neue Kopie erstellt, während durch die Zuweisung zu einem Slice ein neues Slice erstellt wird, das auf dasselbe Array zeigt. Slices verwenden Referenzen, daher kann sich die Änderung eines Slice auf andere Slices auswirken, die auf dasselbe Array verweisen, Variablen sind jedoch nicht betroffen.

Verstehen Sie den Unterschied zwischen Slices und Variablen in der Go-Sprache

Verstehen Sie den Unterschied zwischen Slices und Variablen in der Go-Sprache.

Slices in der Go-Sprache sind ein Referenztyp, der auf das zugrunde liegende Array verweisen kann. Dies ist anders als bei einer Variablen, die ihren Wert direkt speichert.

Slices

Ein Slice besteht aus drei Teilen:

  • Pointer: Zeigt auf die Startposition des zugrunde liegenden Arrays
  • Length: Die Anzahl der Elemente im Slice
  • Capacity: Die Anzahl der im zugrunde liegenden Array verfügbaren Elemente des Slice
mySlice := []int{1, 2, 3} // 创建一个整型切片,包含元素 1、2 和 3

Variablen

Variablen speichern ihre Werte direkt, anstatt auf die zugrunde liegende Datenstruktur zu verweisen.

myVar := 1 // 创建一个整型变量,值为 1

Unterschiede

1. Zuweisung

Die Zuweisung zu einer Variablen erstellt eine neue Kopie der Variablen:

var1 := 1
var2 := var1

var1 = 2 // 修改 var1 的值

fmt.Println(var1, var2) // 输出:2 1

Und die Zuweisung zu einem Slice erstellt ein neues Slice, das auf dasselbe zugrunde liegende Array zeigt:

slice1 := []int{1, 2, 3}
slice2 := slice1

slice1[0] = 4 // 修改 slice1 中的元素

fmt.Println(slice1, slice2) // 输出:\[4 2 3\] \[4 2 3\]

2. Speicherverwaltete

-Variablen speichern ihre Werte direkt, sodass die Zuweisung neuer Variablen keine Auswirkungen auf andere Variablen hat. Slices verwenden Referenzen, daher kann sich die Änderung eines Slice auf andere Slices auswirken, die auf dasselbe zugrunde liegende Array verweisen.

3. Übergabe an Funktionen

Variablen werden als Werte an Funktionen übergeben, während Slices als Referenzen an Funktionen übergeben werden. Das bedeutet, dass Funktionen Slices, aber keine Variablen ändern können.

Praktisches Beispiel

Stellen Sie sich eine Funktion vor, die ein Slice nimmt und es sortiert. Variablen numsresult werden als zwei verschiedene Slices behandelt, auch wenn sie auf dasselbe zugrunde liegende Array verweisen.

func sortSlice(nums []int) {
    sort.Ints(nums) // 对切片排序
}

func main() {
    nums := []int{3, 1, 2}
    result := nums

    fmt.Println(nums) // 输出:\[3 1 2\]

    sortSlice(result) // 对 result 进行排序

    fmt.Println(nums) // 输出:\[1 2 3\]
}

Das obige ist der detaillierte Inhalt vonVerstehen Sie den Unterschied zwischen Slices und Variablen in der Go-Sprache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn