Übergeben Sie ein String-Slice an einen variadischen Parameter einer leeren Schnittstelle
Frage:
Das Gosqlite Das Paket stellt eine Methode mit einem variadischen Parameter vom Typ leere Schnittstelle bereit. Beim Versuch, einen String-Slice als Parameter zu übergeben, generiert der Compiler jedoch einen Fehler. Gibt es dafür eine Möglichkeit oder eine effizientere Methode zum Konvertieren des Slice in eine leere Schnittstelle?
Antwort:
Es ist nicht möglich, ein [ direkt zu übergeben ]string zu einem ...interface{}-Parameter. Die Konvertierung erfordert lineare Zeit, was zu erheblichen versteckten Kosten führen kann.
Stattdessen können Sie eine separate Funktion erstellen, die einen []String akzeptiert und die entsprechende []Schnittstelle{} zurückgibt. Alternativ können Sie Reflektion verwenden, allerdings ist dies mit einem Laufzeitaufwand verbunden. Hier ist ein Beispiel für die Verwendung von Reflektion:
<code class="go">valuesVal := reflect.ValueOf(values) for i := range values2 { values2[i] = valuesVal.Index(i).Interface() } </code>
Das obige ist der detaillierte Inhalt vonWie übergebe ich in Go ein String-Slice an einen leeren variadischen Schnittstellenparameter?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!