Gocql自定义编组

时间:2016-05-12 00:20:50

标签: go cassandra gocql

我有一个带有元组列的表,它由一个与uuid配对的int64组成:

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

我现在可以使用cql语句设置字段,如:

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

我将2个变量作为参数传递,int64gocql.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

1 个答案:

答案 0 :(得分:1)

正如您所提到的,您收到以下错误:

  

不能引用未导出的字段或方法原型

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

type MyID struct {
    Id  int64
    Uid  gocql.UUID
}

然后,它应该工作。