在返回参数中不能使用 nil 作为类型 model.Article

grh*_*rhn -2 go

我有这个函数,它应该查询数据库并返回一个articleif ,如果没有找到文章,则返回nil:

func GetArticleBySlug(slug string) (model.Article, error) {
    var err error
    var article model.Article
    err = database.SQL.Get(&article, "SELECT * FROM article WHERE slug=? LIMIT 1", slug)
    if err != nil {
        log.Println(err)
        return nil, err //<- Problem here
    }
    return article, nil
}
Run Code Online (Sandbox Code Playgroud)

包中Article定义的结构体在哪里model

但我收到此错误:

cannot use nil as type model.Article in return argument
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

Adr*_*ian 5

nil只是指针、切片和映射的有效值。例如,您不能拥有nil结构值。

通常在这样的函数中,您的错误返回将是例如

return model.Article{}, err
Run Code Online (Sandbox Code Playgroud)

返回一个空结构。

  • `nil` 对于接口也有效 (4认同)