Ich habe den folgenden Code:Golang Schnittstellen & Casting
func returnTheMap() map[string][]string{
myThing := getSomeValue()
}
getSomeValue()
kehrt etwas vom Typ map[string]interface{}
aber es ist immer intern ein map[string][]string
.
Was ist der beste Weg myThing
gleichzusetzen mit getSomeValue()
, aber vom Typ map[string][]string
?
Ich kann ein neues Objekt wie so machen:
newMap := make(map[string][]string)
// cardTypeList is of type map[string]interface {}, must convert to map[string][]string
for k, v := range myThing {
newMap[k] = v.([]string)
}
aber ist es eine Möglichkeit, diese an Ort und Stelle zu tun, oder ist es eine bevorzugte Art und Weise, dies zu tun?
Das ist richtig. Das Ändern des Slice-Typs ist eine O (n) -Operation, und die Golang-Entwickler wollten nicht, dass eine O (n) -Typkonvertierung wie andere Typumwandlungen aussieht (welche O (1) sind). Um sie zu erzwingen, müssen Sie den Inhalt explizit durchlaufen und einzeln type-assert, um im Code zu verdeutlichen, dass die Operation keine konstante Zeit ist. – Kaedys