He leído los Tutoriales de Go and Go efectivos, así como alguna fuente, pero el mecanismo exacto detrás de la sintaxis interface {}
es Ir es algo misterioso para mí. Lo vi por primera vez cuando intento implementar heap.Interface
y parece ser un contenedor de algún tipo (me recuerda un poco a la mónada) de la que puedo extraer valores de tipo arbitrario.¿Cuál es el rol de la sintaxis de "interfaz {}" en Go?
¿Por qué se escribe Go para usar esto? ¿Es algún tipo de solución para los genéricos? ¿Hay una manera más elegante de obtener valores de un heap.Interface
que tener que desreferenciarlos con heap.Pop(&h).(*Foo)
(en el caso de los punteros del montón para escribir Foo)?
¡Ahh, es un tipo anónimo! ¡Lo tengo. Gracias! Supongo que usaría algún tipo de reflejo para consultar el tipo que se tiene. No he trabajado con esa parte todavía; Hasta ahora acabo de usar la sintaxis (impar, para mí) '.' 'para recuperar los valores. –
Hay un paquete de reflejos que puede permitirle consultar el tipo, o puede usar un modificador de tipo, que se parece a un modificador normal, pero los casos son tipos. O simplemente puede usar la versión no de error de una aserción de tipo (por ejemplo, 'value, ok: = foo. (Type)') –