There are a lot of differences, and for the answer to be complete, you would need to specify which language you wanted to compare it to. But on a really simple level, thwd's answer is more or less correct. A VM language is usually compiled into an instruction set for that VM. The VM then provides a lot of "special sauce." Go is (usually) compiled directly into machine code to be executed directly on the target system.
One consequence of this is that the executable can be run without having any other software installed on the machine. It also means that the code for the stuff you inquired about such as the garbage collector, goroutine scheduling and stack management, is all present in the single executable compiled by go. As for learning more, it depends somewhat on what your experience level is, and why you want to know. If you are relatively new to programming, I would recommend just using go for a while, without worrying too much about the "magic." If you have a strong background already, you could start learning about the stuff you mentioned. Garbage collection would be an interesting place to start. I don't know of any one resource, but there are a number of interesting videos (gophercon, ect) by principal architects on the subject. Keep in mind that all these things are constantly evolving, so any information you get may not apply to the latest version of the language. Good luck. On Tuesday, September 4, 2018 at 10:50:03 AM UTC-4, thwd wrote: > > A virtual machine has its own instruction set. Go compiles to machine code > for a given target (which could be a virtual machine). > > On Tuesday, September 4, 2018 at 12:27:49 PM UTC+2, Pablo Rozas Larraondo > wrote: >> >> The Go documentation provides some explanation about the difference >> between Go’s runtime and a virtual machine here: >> >> https://golang.org/doc/faq#runtime >> >> Does anyone can recommend a good place to learn more about this? I’d like >> to better understand how Go’s garbage collector, goroutine scheduling and >> stack management are handled by the runtime and how it is different from a >> virtual machine. >> >> Thanks, >> Pablo >> >> -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.