.
Saya mempunyai antara muka yang dipetakan sebagai medan dalam struct seperti ini:
type room struct { // ... components map[string]interface{} // ... }
Saya perlukan sesuatu seperti ini:
for _, v := range currentroom.components { v.render() }
Ini tidak berjaya, tetapi apabila saya menyatakan jenis dan memanggil setiap item secara manual secara individu, ia berjaya:
currentRoom.Components["menu"].(*List.List).Render() currentRoom.Components["header"].(*Header.Header).Render()
Bagaimana untuk memanggil kaedah render()
方法(假设它们都实现 render()
pada setiap item dalam peta? Atau jika ada cara yang lebih baik/berbeza untuk menyelesaikan masalah ini, tolong beri pencerahan kepada saya kerana saya berada di hujung akal saya di sini.
Tentukan antara muka:render()
type renderable interface { render() }
currentroot.components["menu"].(renderable).render()
renderable, ok:=currentRoot.Components["menu"].(Renderable) if ok { renderable.Render() }
Atas ialah kandungan terperinci Ulangi peta 'antara muka{}' dan panggil kaedah yang sama pada setiap item dalam Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!