29 ms·
It’s pretty common to type check interface implementations in Go using package-level casts.
by ericpauley 3mo ago
It’s pretty common to type check interface implementations in Go using package-level casts.
- pjmlp 3mo agoI know, it is yet another language hack, just like the iota/const dance, instead of proper language constructs.
- flakes 3mo agoHow is a package level interface check a “language hack”? They are straight forward and provide a user the same compile time guarantees as the Java implements keyword.
- pjmlp 3mo agoBecause they are a workaround for what should be a language feature in first place, just like on ML languages to type check structural types.
- flakes 3mo agoWhat exactly isn’t a language feature? Or do you have issues with semantics? var _ Foo = (*Bar)(nil) The statement asserts that Bar struct pointers are assignable to a Foo interface. I do agree it’s not as clean looking as the Java implements keyword, but it’s already a fairly terse pattern and IMO the inconvenience does not justify introducing new language syntax.