https://www.gingerbill.org/article/2024/06/17/go-iterator-design/