Heim > Artikel > Backend-Entwicklung > Zwei Möglichkeiten für Golang, festzustellen, ob eine Methode in einer Struktur vorhanden ist (mit Codebeispielen)
Dieser Artikel wird Ihnen helfen, Golang zu lernen und darüber zu sprechen, wie Golang bestimmt, ob eine Struktur eine bestimmte Methode hat. Ich hoffe, dass er für alle hilfreich ist.
go Bestimmen Sie, ob eine Struktur eine bestimmte Methode hat
go Manchmal müssen Sie beurteilen, ob eine bestimmte Struktur eine bestimmte Methode hat, aber Sie fühlen sich möglicherweise plötzlich verwirrt. Go kann auch wie PHP urteilen
Ja, Obwohl go keine vorgefertigte Methode bereitstellt, können Sie die vorhandene Logik verwenden, um die Implementierung zu kapseln. [Empfohlenes Lernen: Go-Video-Tutorial]
Es gibt derzeit zwei Methoden, die verwendet werden können. Eine besteht darin, die vollständige Methode zu kennen und die Schnittstellenbehauptung zur Beurteilung zu verwenden, und die zweite darin, die Reflexion zu verwenden, um die Beurteilung zu vervollständigen.
Bereiten Sie die Struktur vor, die beurteilt werden muss:
type RefData struct {} func (this *RefData) Show(data any, name string) string { data2 := data.(string) + "===" + name return data2 }
Interface-Assertion-Beurteilung:
refDataExists := false var refDataOb any = &RefData{} if _, ok := refDataOb.(interface { Show(any, string) string }); ok { refDataExists = true }
Reflexionsbeurteilung:
import( "reflect" ) // 判断结构体方法是否存在 func MethodExists(in any, method string) bool { if method == "" { return false } p := reflect.TypeOf(in) if p.Kind() == reflect.Pointer { p = p.Elem() } // 不是结构体时 if p.Kind() != reflect.Struct { return false } object := reflect.ValueOf(in) // 获取到方法 newMethod := object.MethodByName(method) if !newMethod.IsValid() { return false } return true } // 使用 refDataExists := MethodExists(&RefData{}, "Show")
Das obige ist der detaillierte Inhalt vonZwei Möglichkeiten für Golang, festzustellen, ob eine Methode in einer Struktur vorhanden ist (mit Codebeispielen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!