So, at runtime, Go 1 code needs to be able to work with Go 2 types. That will impose some restrictions, I imagine.
Interesting. Are there any other languages where that is allowed? I'm assuming that by "codebase" you mean all the code that gets compiled into one program or library (for compiled languages), or is part of one program or library (for interpreted languages). And I don't mean the case where only a common subset of Lang X v1 features and Lang X v2 features are used in the same codebase (because in that case, there is no issue). That latter case is possible, for example, in Python, and probably some many languages too. In fact by the definition of the case, it should be possible in all languages.
>>Interesting. Are there any other languages where that is allowed?<<
C / C++
Perl 5/6
The various language feature pragmas in Haskell.
Correct.
> Are there any other languages where that is allowed?
One would be Racket, a Lisp which allows you to pick a syntax flavour using the #lang directive: https://docs.racket-lang.org/guide/Module_Syntax.html#%28par...