我有一个带有元组列的表,它由一个与uuid配对的int64组成:
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
)
答案 0 :(得分:1)
正如您所提到的,您收到以下错误:
不能引用未导出的字段或方法原型
这意味着您需要在结构中导出字段,这意味着在Go中以大写字母开头。所以你的结构应该是:
type MyID struct {
Id int64
Uid gocql.UUID
}
然后,它应该工作。