Tested with both 2 * 16 and 4 * 20 screens on a Raspberry Pi Zero.
I couldn't get any golang hd44780 libraries to output a degree symbol ˚ correctly (char 223), yet it worked fine with a python library. I couldn't work out where the bug was so decided to implement the python lib in go, it worked (I still feel like the problem was my side somehow). I then kept going, refactoring and implementing the best features and patterns I found in other implementations. Much of what I ended up with came from kidoman/embd.
I spent quite a long time trying to read data via I²C, didn't manage to get it working but have left in some code I tried to use.