我想从sql数据库中获取一行.我使用以下代码:
var name string
row := db.Con().QueryRow("SELECT name FROM users WHERE id = 2;")
err := row.Scan(&name)
if err != nil {
// log the error
}
Run Code Online (Sandbox Code Playgroud)
例如:如果用户id=2不存在,则该方法Scan返回错误.
题:
当行不存在时,有没有办法避免这个错误?因为它绝对正常,我不想记录这样的错误.
我发现的唯一方法是使用Query而不是QueryRow,但它不方便,因为for rows.Next() { ..每次我想要获取单行时我都要添加.
有两个结构体A和B。B包含A。还有一个附加到A的函数。它返回父对象的json。当我在 B 的实例上调用函数时,我希望看到 json 中的所有对象字段,但我只得到 A 的字段。请看代码:
type A struct {
Foo string
}
type B struct {
A
Bar string
}
func (object *A) toJson() []byte {
res, _ := json.Marshal(&object)
return res
}
func main() {
b := B{}
fmt.Println(string(b.toJson()))
}
Run Code Online (Sandbox Code Playgroud)
我期望得到{"Foo":"", "Bar":""}但结果是{"Foo":""}。第一种方法是为这两个结构定义两个单独的函数。但有没有第二种解决方案只有一种功能呢?先感谢您。