Don't use constructor function
add generator unit test
implement set predefined macros
gofmt