Sorry, IMHO, But You want to explore concepts/idioms/paradigms but restrict youself by two programming languages very similar nature (ok, Go is not OOP in common sence).
Just look at different world: Clojure, Haskell, Ocaml, Erlang (maybe Elixir). Even Smalltalk shows you true priciples of OOP which are far from Java/C++ and close to Erlang processes/actors.
These languages force you to think different.
BTW, Elixir can really help you in Web projects because it has Phoenix LiveView framework.
Seaside framework for Pharo (Smalltalk) is very nice as well.
I'd recommend q4os distro. I tried it on old toshiba chomebook with 2Gb RAM and it works quite well. Trinity desktop environment looks like old Windows.
And another good alternative is Crunchbang++ (CBPP). OpenBox windows manager requires you to have alternative approach on UI a bit but it works very fast.
I personaly use CBPP on my laptops (both, old and fresh enoght).
Hi. Python has typing. I use it exactly how you describe. First stage of module I develop is usually without types. As soon as I feel some stabilization - I think twice :) then add types and 'mypy' checks my module.
My colleague says this idea came to python from TypeScript. Maybe it's true. I don't know TypeScript.
BTW, Python's typing has Union, Optional, Any ... and I don't know equivalent type options in Go.
But Delphi/Lazarus is much more. It's component based programming with GUI as part of this ... component philosophy.