Check out "Writing An Interpreter In Go" https://interpreterbook.com/
It uses Golang to make an interpreter for a simple C-Style language and it's "only" 200 pages long. I'm about a third in and my head is smoking.
For example here's a version with classes / OO-behaviour:
https://github.com/haifenghuang/monkey
Or here's my version which "just" adds some more standard-library facilities, allowing you to open/read/write files:
I found the language fun to play with, and I used a virtually identical lexer and parser-idea in a recent project of my own - rather than "parsing" an input-file with regular-expressions, which is how I would have previously approached the implementation of simple DSLs. I guess that showed I'd learned something useful!