2015-01-05 2 views
0

Я пытаюсь использовать следующий DB API: https://godoc.org/github.com/syndtr/goleveldb/leveldb# (простой файл на основе ключ/значение DB)Golang LevelDB структура

я был в состоянии поставить и получить «ключ» S в базу данных. Однако, мне интересно, если значение может быть на структуру, такие как:

type Thm struct { 
    Name string 
    Age int 
} 

Затем

var Tmp Thm 
Tmp.Name = "Gon" 
Tmp.Age = 33 

db.Put([]byte("test3"), []byte(Tmp), nil) 

Прямо сейчас, ошибка я получаю «может не завуалированный Tmp (типа THM) ввести [] байт.

Если у вас есть опыт работы с LevelDB, могли бы вы помочь мне, как правило, это будет сделано? OR, я должен преобразовать в байт-структуру для того, чтобы сделать эту работу?

Спасибо

ответ

0

levelDB поддерживает только строки/байтовые массивы в качестве ключей и значений. Это на самом деле довольно умная функция, потому что она сохраняет сериализацию сложных структур данных на уровне приложений. Чтобы сериализовать структуру Thm, вы можете попробовать gob package, если вам не нужны приложения на других языках, чтобы иметь возможность читать значения или protobufs, json или msgpack, если вам нужны сериализованные данные для доступа к другим языкам.

+0

спасибо. Я думаю, пакет gob, возможно, единственный вариант на данный момент :) – Gon