Ich habe diesen Code zusammengefasst, um Registerkarten in einem Notebook in Gtk anzuzeigen. Im Grunde habe ich eine benutzerdefinierte Struktur mit einem eingebetteten Label erstellt, das dem Notebook hinzugefügt wird. Danach möchte ich dieses benutzerdefinierte Widget zurückbekommen, aber ich bekomme eine Invalid type assertion
. Ich habe viel über Strukturen und Schnittstellen gelesen, aber ich kann es nicht zum Laufen bringen.Gotk3, Notebook Appendpage mit einem benutzerdefinierten Widget und bekomme es zurück
package main
import "github.com/gotk3/gotk3/gtk"
type NotebookPage struct {
gtk.Label
}
func main() {
gtk.Init(nil)
win, _ := gtk.WindowNew(gtk.WINDOW_TOPLEVEL)
notebook, _ := gtk.NotebookNew()
win.Add(notebook)
content1, _ := gtk.LabelNew("Content 1")
page1 := NotebookPage{Label: *content1}
label1, _ := gtk.LabelNew("Label 1")
notebook.AppendPage(&page1, label1)
content2, _ := gtk.LabelNew("Content 2")
page2 := NotebookPage{Label: *content2}
label2, _ := gtk.LabelNew("Label 2")
notebook.AppendPage(&page2, label2)
win.ShowAll()
win.Connect("destroy", func() {
gtk.MainQuit()
})
backwidget1, _ := notebook.GetNthPage(0)
backpage1, _ := backwidget1.(*NotebookPage)
gtk.Main()
}
Was ist der vollständige Fehler, den Sie erhalten? –
Zum Zeitpunkt der Kompilierung test.go: 35: unzulässige Typ-Zusicherung: backwidget1. (* NotebookPage) (Nicht-Schnittstellentyp * gtk.Widget auf der linken Seite) – okelet
Typ-Zusicherungen funktionieren nur bei Schnittstellentypen. '. ()' oder '. ()'. Sie können einen konkreten Typ nicht auf einen anderen Typ, eine andere Schnittstelle oder auf andere Weise eingeben. Aus der Fehlermeldung, es scheint, dass "Backwidget1" ist ein konkreter Typ (eine Struktur, am wahrscheinlichsten), keine Schnittstelle, so dass Ihre Typ-Assertions ungültig sind. Außerdem überprüfen Sie nicht den booleschen zweiten Wert Ihrer Typassertionen (das '_'), der Ihnen sagen würde, ob die Typbestätigung erfolgreich war. Wenn nicht, ist 'backpage1' gleich Null. Sie sollten diesen booleschen Wert wirklich überprüfen. –
Kaedys