Heim  >  Artikel  >  Backend-Entwicklung  >  Die Methode „Element entfernen“ funktioniert in Golang nicht

Die Methode „Element entfernen“ funktioniert in Golang nicht

WBOY
WBOYnach vorne
2024-02-09 09:33:181054Durchsuche

删除元素方法在 Golang 中不起作用

Der PHP-Editor Banana zeigt Ihnen, wie Sie Elemente in Golang löschen. In Golang ist die Methode zum Löschen von Elementen nicht so einfach wie in anderen Programmiersprachen, aber wir können sie mit einigen Tricks erreichen. In diesem Artikel werden wir verschiedene gängige Methoden untersuchen, die Ihnen dabei helfen, Elemente in Golang einfach zu löschen und die Programmiereffizienz zu verbessern. Egal, ob Sie Anfänger oder erfahrener Entwickler sind, diese Methoden werden Ihnen helfen. Finden wir es gemeinsam heraus!

Frageninhalt

Ich habe einen einfachen Code zum Entfernen von Elementen aus einem Slice:

package main

import "fmt"

func main() {
    values := []string{"1", "2", "3", "4", "5"}
    valuesresult := removeelementbyindex(values2, 0)
    fmt.printf("%v - %v\n", values, valuesresult)
}

func removeelementbyindex[t interface{}](a []t, i int) []t {
    return append(a[:i], a[i+1:]...)
}

Aber die Ausgabe ist

[2 3 4 5 5] - [2 3 4 5]

Aus irgendeinem Grund ändern sich die values, aber ich ändere sie nicht in meiner Methode (vermute ich). Bitte helfen Sie mir, dieses Problem zu lösen values 正在改变,但我没有在我的方法中改变它(我猜)。请帮我解决这个问题

解决方法

您确实更改了原始切片。如果附加操作的结果适合切片的容量,则 append

Problemumgehung

Sie haben das ursprüngliche Slice geändert. Wenn das Ergebnis der Append-Operation in die Kapazität des Slice passt, verwendet die append-Operation das ursprüngliche Slice. 🎜 🎜Wenn Sie die Originalscheibe unverändert benötigen: 🎜
func removeElementByIndex[T interface{}](a []T, i int) []T {
    result := make([]T, len(a)-1)
    copy(result,a[:i])
    copy(result[i:],a[i+1:])
    return result
}

Das obige ist der detaillierte Inhalt vonDie Methode „Element entfernen“ funktioniert in Golang nicht. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen