Heim  >  Artikel  >  Backend-Entwicklung  >  Wie greife ich mit der Typschnittstelle {} auf benutzerdefinierte Daten in Goroutinen zu?

Wie greife ich mit der Typschnittstelle {} auf benutzerdefinierte Daten in Goroutinen zu?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-03 20:13:03263Durchsuche

How to Access Custom Data in Goroutines with Type Interface {}?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn