У меня есть структура, в которой merkleTree.MerkleProof - это интерфейс, который реализуется mTree.Proof:
type Checkpoint struct {
Leaves []Leaf
MerkleProof merkleTree.MerkleProof
}
type MerkleProof interface {
Verify(leafHash, treeRoot []byte)
}
type Proof struct {
Hashes [][]byte
Path []byte
}
Я кодирую структуру Checkpoint (со структурой Proof в поле MerkleProof) в файл с JSON или Gob и все идет гладко; данные закодированы правильно.
"Proof": {
"Hashes": [
"f8kfN1YkWAwRpj1wbX2izMGC5DbHel//d5y5hceamAc="
],
"Path": "AA=="
}
Когда я go декодирую те же закодированные данные, я получаю следующую ошибку:
json: cannot unmarshal object into Go struct field Checkpoint.MerkleProof of type merkleTree.MerkleProof
Gob дает похожую ошибку. Как заставить декодеры распознать, что структура Proof реализует MerkleProof и может быть сохранена в поле?