True that a major goal of Java was "write once, run anywhere", and containers do reduce the importance of that.
But Java has other benefits. One is that it is typesafe, which is hugely valuable for maintainability: reading and understanding another team member's code is much, much easier if the code is typesafe, because one can tell at a glance what type of object is returned by a method.
With Go that is not the case: Go's "duck typing" is horrible - worse than horrible - from a maintainability perspective. Having spent hours reading the Go code of the Docker team's version 2 registry, and having personally read the code of hundreds of other people during my programming tenure (approaching 40 years), I can say that the Go code was among the hardest to read: it was harder to reverse engineer than Python, which has no type safety.
Also, Go has quirks which are a landmine for newbies. Since today, most programmers are in newbie mode half the time, due to rapid change and the sheer number of tools, it is very useful to have languages and tools that are forgiving and readable by newbies. Yet Go has the horrible landmine that if you type assert something and check for null, and then check for null on the un-type-asserted value, one of those can return true and the other false. How many bugs will that lead to?
Another strange feature is that it treats objects passed as parameters diffeerntly than objects passed as the call target.
Go has plusses, but it is my understanding that Go was an experiment that was taken out of the lab. It was not designed as a robust general purpose language.
The horse has left the barn, and peole are using Go for real things. That is a shame. We could have done much better.
Also, regarding Java, there is Graal (https://www.graalvm.org/). I cannot say much about it though, as I have not used it, but it looks really interesting.