Heim > Artikel > Backend-Entwicklung > Wie greife ich mit der Typschnittstelle {} auf benutzerdefinierte Daten in Goroutinen zu?
Zugriff auf benutzerdefinierte Daten in Goroutine mit Typschnittstelle {}
In einigen Szenarien kann es vorkommen, dass Sie auf übergebene Daten zugreifen müssen als anonyme Struktur für eine Goroutine, die einen geplanten Job mit Gojob ausführt. Der direkte Zugriff auf seine Felder führt jedoch zu der Fehlermeldung „Typ-Schnittstelle {} ist Schnittstelle ohne Methoden“.
Um dieses Problem zu beheben, müssen Sie die benutzerdefinierten Daten von Schnittstelle {} explizit in den richtigen Typ umwandeln, bevor Sie darauf zugreifen Felder. So können Sie Ihren Code ändern:
<code class="go">func NewJob(t string, name string, c func(), v interface{}) { ... jobs = append(jobs, job) }</code>
<code class="go">func Custom(name string) interface{} { ... return jobs[i].custom }</code>
Jetzt können Sie innerhalb der geplanten Goroutine auf das Feld der anonymen Struktur zugreifen, indem Sie es typisieren:
<code class="go">id := v.(struct{Id int}).Id</code>
Dieser explizite Typ Die Behauptung stellt sicher, dass Sie auf das ID-Feld zugreifen können, ohne dass der Fehler „undefiniert“ auftritt.
Das obige ist der detaillierte Inhalt vonWie greife ich mit der Typschnittstelle {} auf benutzerdefinierte Daten in Goroutinen zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!