Go is mainly meant to be used for systems development not application development. It's audience is developers who currently use C/C++ rather than mobile developers coding in Java.
Why couldn't it replace Java? From reading about it and my limited use of it I get the impression that it's meant to be able to replace C or C++ but it's also meant to be used to write applications as a replacement for a language like Java. The libraries and API stability are lacking, but I don't see any language issues that would make it a bad application language.
I'd say that you should take your time with interop, and practice isolationism for as long as possible. I don't mind waiting for Go to evolve naturally.
Java still has a few killer features that Go doesn't. Primarily, running in a VM and "interpreting" byte code means you can ship a single binary to every platform. Go requires you to compile a separate executable for every platform.
Having to run in a VM is also seen as a drawback by some people, including me. The VM startup time makes using command line tools written in Java painful and Java apps often feel awkward on every platform since they don't use any platform specific features. So even though having a single binary work across all platforms is a killer feature for some people it's yet another disadvantage of java for others.
Despite that being its stated purpose it is an excellent general purpose programming language; GC, 'true' interfaces, i.e. interfaces that are implemented simply by a type having a function set which matches a specified interface, and a lot more - it's simple, clean and obviously has a great future ahead of it.
There's no reason to label go as simply a systems programming language in the same way you can't just label python or ruby scripting languages.
If you talk to people in the Go community you'll see that they interpret "systems programming" to mean both OS-level development and applications-level development.
Users interact with applications, things a user doesn't directly interact with are systems. Where you draw the line is really dependent on what you're doing.
Someone recently described academia as 'Java vocational training'[1].
I'd expect Go to replace Java in the academic context relatively quickly, which should precipitate a shift in business' center of gravity over time. I already suggest Go to people who are serious about learning.
Why would you expect go to replace java in an academic setting? Java is only partly taught due to introductory simplicity and mostly taught due to it ubiquity.
Personally, I'd be surprised if Go replaced Java in academic contexts. Java has inertia, marketability, better cross-platform support, and bundled GUI stuff.
That said, were I teaching a general programming and/or data structures course, I'd probably strongly consider using Go. It is possible and not unreasonable for students to read and understand the whole Go spec. The language is simple and orthogonal enough that I think students could start seeing past the language and to the tasks at hand rather quickly.