Heim >Backend-Entwicklung >Golang >Wie bestimmt die Go-Sprache, ob eine bestimmte Methode in einer Struktur vorhanden ist? Zwei Möglichkeiten zur Einführung
Wie kann man feststellen, ob eine Methode in einer Struktur in der Go-Sprache vorhanden ist? Der folgende Artikel stellt Ihnen zwei Möglichkeiten in Golang vor, um festzustellen, ob eine Methode in einer Struktur vorhanden ist (mit Codebeispielen).
go Manchmal müssen Sie beurteilen, ob eine bestimmte Struktur eine bestimmte Methode hat, aber Sie fühlen sich plötzlich verwirrt. Go kann auch wie PHP beurteilen.
Ja, obwohl go keine vorgefertigte Methode bereitstellt, ist dies der Fall kann vorhandene Logik verwenden, um die Implementierung zu kapseln.
Derzeit stehen zwei Methoden zur Verfügung: Die eine besteht darin, die vollständige Methode zu kennen und die Schnittstellenbehauptung zur Beurteilung zu verwenden. Die zweite besteht darin, 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")
[Empfohlenes Lernen: Video-Tutorial besuchen]
Das obige ist der detaillierte Inhalt vonWie bestimmt die Go-Sprache, ob eine bestimmte Methode in einer Struktur vorhanden ist? Zwei Möglichkeiten zur Einführung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!