How to compute the ipld scheme CID in golang or others?

I use ipfs ls <CID> or ipfs dag get <CID> to get the chunks’cid of a file in the file’s Merkle DAG. Then I use ipfs get <CID> to get a 256KB chunk in the list.


However, when I use cid.NewCidV0() in golang to re-compute this chunk’s CID, it get the different output. The origin is Qmbx3PCfDUWmPCAbi19n3XFB127cMEUKBWRpj4jFidKSZP, but I got QmeJyXwjcbrcMPcqrJx7YgtvBKQC39eLRNYw7sF3M6zcdT through cid.NewCidV0().
I have seen this issue and guess that the situation is related to IPLD. But I can’t find the specific tutorial to reproduce Merkle DAG in IPFS.

Or I can ask in a different way, how can I reproduce the tree structure in this figure using Golang or others. Please give me an detail answer :sob: