1

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

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

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

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

我传入 2 个变量作为参数, anint64和 a gocql.UUID

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

type MyID struct {
    id  int64
    uid  gocql.UUID
}

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

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

4

1 回答 1

1

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

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

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

type MyID struct {
    Id  int64
    Uid  gocql.UUID
}

然后,它应该工作。

于 2016-05-13T12:42:03.213 回答