use nullptr replace NULL
use delegate ctor reduce code
add go impl initial version
Merge branch 'dev'