Add visitor, semantic analysis and code generation will come soon hopefully.

Finally, all struct use pointer instead of value, the semantic between interface and pointer in golang is a trick intuitively.