I've been making my way through "Writing an Intepreter in Go" and "Writing a compiler in Go" https://interpreterbook.com/
The Go stuff is really just a means to an end, the real value comes from the practical learnings of how to build a functioning interpreter and compiler (and virtual machine!) for a programming language the author made up called Monkey.
It's not a book full of theory but it lays some nice foundations that might help you understand the theory better :)
On similar topic, back in school we followed "Modern Compiler Implementation using ML" by Andrew Appel. Pretty good book, which teaches good amount of theory, but also has a project where you implement pieces of compiler as you progress through the book. Its fairly challenging, as you will generate assembly (MIPS) instead of just interpreting and apply various optimizations (and register allocation) in the end.
Its not exactly from scratch as there is some boilerplate code to keep you focused on concepts. It was quite fun, except I didn't really like working with SML (OCaml would have been nicer IMO, and I think you can choose to use that by finding the ported boilerplate on Github). Also has C and Java versions of this book.
On a similar note, Go Programming Blueprints, which just takes you right into practical affairs - project organization, template loading / rendering, a little bit of testing, REST apis, oAuth, image handling (via oauth, gravatar and file upload), databases, CLI's, external APIs, App Engine, microservices, gRPC and Docker. The main gripe I've had with it so far is that the bit of HTML / JS that is in there seems rather dated, but on the other hand, it's good old jquery from CDNs instead of bothering the reader with setting up nodejs, webpack and all that.
I really should kick myself up the arse and go beyond chapter 3, I'm doing Go in a real project now.
The Go stuff is really just a means to an end, the real value comes from the practical learnings of how to build a functioning interpreter and compiler (and virtual machine!) for a programming language the author made up called Monkey.
It's not a book full of theory but it lays some nice foundations that might help you understand the theory better :)