我有一个表,其中有一个由int64和一个uuid组成的元组列:

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

而且我目前可以使用cql语句来设置字段,例如:
UPDATE ks.mytable hits = hits + 1 WHERE fileid=(? ?);

我传入了两个变量作为参数int64gocql.UUID

我不想将2个变量随处移动,而是想将它们放在一个结构中,例如
type MyID struct {
    id  int64
    uid  gocql.UUID
}

然后使用Marshaller将它们传递到UPDATE语句中。

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

最佳答案

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



这意味着您需要在struct中导出字段,这意味着在Go中以大写字母开头。因此,您的结构应为:

type MyID struct {
    Id  int64
    Uid  gocql.UUID
}

然后,它应该工作。

10-08 02:23