Gocql 自定义编组器

Gocql custom marshaller

我有一个 table,其元组列由一个 int64 和一个 uuid 配对组成:

CREATE TABLE ks.mytable {
    fileid    frozen <tuple <bigint, uuid>>,
    hits      counter,
    ...

我目前可以使用如下 cql 语句设置字段:

UPDATE ks.mytable hits = hits + 1 WHERE fileid=(? ?);

我传入了 2 个变量作为参数,一个 int64 和一个 gocql.UUID

我不想到处移动 2 个变量,而是想将它们放在一个结构中,例如

type MyID struct {
    id  int64
    uid  gocql.UUID
}

然后使用 Marshaller 将这些传递到 UPDATE 语句中。

这可能吗?我不确定是否可以为元组字段传入单个变量。如果是这样,我该怎么做?我无法弄清楚如何 - 我试图模仿 https://github.com/gocql/gocql/blob/master/marshal_test.go#L935 但我遇到错误,无法在结构中设置字段 (cannot refer to unexported field or method proto)

如您所述,您收到以下错误:

cannot refer to unexported field or method proto

这意味着您需要在结构中导出您的字段,这意味着在 Go 中以大写字母开头。所以你的结构应该是:

type MyID struct {
    Id  int64
    Uid  gocql.UUID
}

那么,应该可以了。