Beim Programmieren in Golang verwenden wir häufig das Schlüsselwort „range“, das zum Durchlaufen von Datenstrukturen wie Arrays, Slices, Karten und Kanälen verwendet wird. Wenn wir jedoch während des Durchlaufvorgangs die durchquerten Elemente ändern möchten, treten einige Probleme auf. In diesem Artikel wird erläutert, wie Sie mithilfe des Bereichs Elemente in Arrays, Slices, Karten und Kanälen ändern.
Beim Durchlaufen von Arrays und Slices gibt das Schlüsselwort „range“ eine Kopie des Elements zurück, nicht das Element selbst. Wenn wir also ein Element ändern möchten, müssen wir den Zeiger des Elements verwenden. Das Folgende ist ein Codebeispiel zum Ändern von Array- und Slice-Elementen:
arr := [3]int{1, 2, 3} for i := range arr { temp := &arr[i] *temp = *temp*2 } slice := []int{1, 2, 3} for i := range slice { temp := &slice[i] *temp = *temp*2 }
Die temporäre Variable temp wird im Code verwendet, um den Zeiger des Elements zu speichern und den Wert des Elements über den Zeiger zu ändern.
Beim Durchlaufen der Karte gibt das Schlüsselwort „range“ eine Kopie des Schlüssel-Wert-Paares zurück, nicht das Element selbst. Wenn wir also ein Element ändern möchten, müssen wir den Schlüssel verwenden, um auf das Element zuzugreifen und seinen Wert zu ändern. Hier ist ein Codebeispiel, das ein Kartenelement ändert:
oldMap := map[string]int{"a": 1, "b": 2, "c": 3} newMap := make(map[string]int) for k, v := range oldMap { newMap[k] = v*2 }
Im Code wird beim Durchlaufen der Karte der Schlüssel verwendet, um auf das Element zuzugreifen und seinen Wert zu ändern. Beachten Sie, dass Sie beim Ändern der Werte von Elementen in der Karte keine Zeiger verwenden müssen.
Beim Durchlaufen des Kanals gibt das Schlüsselwort „range“ eine Kopie des Elements zurück, nicht das Element selbst. Wenn wir also die Elemente im Kanal ändern möchten, müssen wir den Sendevorgang des Kanals verwenden, um den Wert im Kanal zu ändern. Das Folgende ist ein Codebeispiel zum Ändern von Elementen im Kanal:
ch := make(chan int, 3) ch <- 1 ch <- 2 ch <- 3 for i := range ch { ch <- i*2 }
Im Code wird die Sendeoperation des Kanals verwendet, um den Wert des Elements auf das Doppelte seines ursprünglichen Werts zu ändern. Es ist zu beachten, dass beim Ändern von Elementen in einem Kanal die Sendeoperation des Kanals verwendet werden muss, um den geänderten Wert an den Kanal zu senden.
Zusammenfassung:
Wenn wir das Schlüsselwort range zum Durchlaufen von Arrays, Slices, Karten und Kanälen verwenden und die durchquerten Elemente ändern möchten, müssen wir den Zeiger des Elements (Array und Slice) und den Schlüssel zum Zugriff verwenden das Element (Map). Oder verwenden Sie die Sendeoperation des Kanals, um den Wert des Elements (Kanals) zu ändern. Es ist zu beachten, dass Sie bei der Verwendung des Bereichs zum Ändern von Elementen darauf achten müssen, keine Probleme wie Endlosschleifen oder Rennbedingungen in der Schleife zu verursachen.
Das obige ist der detaillierte Inhalt vonSo verwenden Sie den Bereich, um Elemente in Arrays/Slices/Maps und Kanälen zu ändern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!