使用“扫描”将db值强制转换为特定类型

时间:2018-02-12 07:18:03

标签: go

我试图将使用github.com/jackc/pgx从Postgres检索到的UUID读入uuid.UUID类型的变量(来自github.com/google/uuid包)。

示例代码可以是:

var dbId = uuid.UUID 
err = db.Pool.QueryRow("SELECT id FROM users WHERE objectname = $1;", objectUUID.String()).Scan(&dbId)
  if err != nil {
    log.Printf("Failed to fetch from database: %v", err)
    return
  }

quickfix是将dbId存储在临时变量中,然后将所述临时变量转换为正确的类型,但我觉得有一种更好或更惯用的方法。

我得到的错误是:

2018/02/12 07:09:18 handlers.go:187: Failed to fetch from database: can't scan into dest[1]: cannot assign &{[127 122 68 237 130 120 65 78 159 189 9 188 27 48 117 88] 2} into *uuid.UUID

1 个答案:

答案 0 :(得分:0)

错误表示您正在尝试扫描指向UUID指针的结构指针。结构定义为here。所以基本上你应该使用这个结构并将其扫描到那个结构中,然后将结构中的字节数组转换为你正在使用的任何UUID类型。