first complete version, with lots of testing comments, without explantion comments
Merge https://github.com/xiaoxulv/go