golang reflect codec