Go type generation