登录
首页 >  Golang >  Go问答

不支持的型号*settingsmodel.Settings?

来源:stackoverflow

时间:2024-04-16 19:42:33 248浏览 收藏

小伙伴们对Golang编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《不支持的型号*settingsmodel.Settings?》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中也会多多分享相关知识点,希望对大家的知识积累有所帮助!

问题内容

我正在为 postgresql 使用这个 orm 库:https://godoc.org/github.com/go-pg/pg#example-db-select 我遇到了一个我不明白的奇怪问题.

我正在尝试从 settings 表中选择 select 数据,以便稍后使用函数更新该值。

package settingsmodel

import (
    . "database"
)

type settings struct {
    id int64
    sitename string
}

func set(newvalue string) bool {
    site := &settings {
        sitename: "mysite",
    }

    err := db.select(&site)
    if err != nil {
        panic(err) // this is where it panics
    }

    site.sitename = newvalue
    err = db.update(site)
    if err != nil {
        panic(err)
    }

    return true
}

我收到的错误是 panic: pg: model(unsupported *settingsmodel.settings)

我有另一个函数(在同一个文件中),我可以在其中获取站点名称,并且它工作得很好:

func Get() string {
    var site Settings

    err := Db.Model(&site).First()
    if err != nil {
        panic(err)
    }

    return site.SiteName
}

我真的不明白为什么它不起作用。有什么帮助吗?谢谢!


解决方案


在工作示例中,您将传递一个指向设置的指针;在第一个(非工作)示例中,您将指针传递给指针:

// &settings - site is a pointer to a settings struct
site := &settings {
    sitename: "mysite",
}

// &site - pass a pointer to site, which is already a pointer
err := db.select(&site)

与工作中的比较:

// site is a value, not a pointer
var site Settings

// Pass a pointer to the value
err := Db.Model(&site).First()

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《不支持的型号*settingsmodel.Settings?》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>