type MyNumber interface {
float32, float64, uint, int
}
3 Réponses :
existe-t-il un moyen de réduire les types autorisés à une liste spécifique de types [d'une interface vide]? p> blockQuote>
au moment de la compilation, non. P>
Vous pouvez choisir d'utiliser une limitation au moment de l'exécution. Cela devrait être évité lorsqu'il existe d'autres alternatives, car elle ne fournit pas autant de sécurité. P>
Ceci est fait dans la bibliothèque standard dans un certain nombre de places, telles que le maréchaler JSON, qui nécessite un pointeur comme cible. P>
Vous ne pouvez pas forcer à un ensemble de types de béton au moment de la compilation d'une manière que vous souhaitez.
Ce que vous pouvez faire est d'utiliser des interfaces. Énumérez les méthodes de l'interface que vous attendez des implémentations. Ensuite, cela ne comportera pas ce que le type concret et exécutif est. Vous interagissez avec la valeur uniquement via l'interface, garantie à la compilation de la compilation qu'elle est mise en œuvre par la valeur transmise. P>
E.g. Si vous attendez que la valeur fournisse une valeur Cela ne comportera pas si la valeur transmise a Par exemple: P> int32 code>, utilisez cette interface: p> int32 code> ou float64 code> comme type sous-jacent, ou c'est tout ce type complexe. Vous avez besoin d'un int32 code>, et c'est ce que vous obtenez. Les implémentateurs sont responsables comment produire cette valeur. P> int32 value: 1
int32 value: 2
Cette approche me permettra de créer une interface avec des méthodes et une totrage, mais de transmettre que l'interface à une méthode nécessitera la structure qui est transmise à la mise en œuvre: "TOINT et TOSTRING", mais ce dont j'ai besoin, c'est "TOINT ou TOSTRING "
On dirait que la Go pourrait avoir accès aux génériques et aux types multi-types appropriés en environ 2021: P>
https://blog.golang.org/generics-next-step https: // www. Infoworld.com/article/3562345/googles-go-language-could-get-Generics-in-2021.html P>
Pourquoi le vote en bas?