【发布时间】:2021-08-03 14:06:50
【问题描述】:
我正在努力弄清楚为什么没有找到 go 应用程序中的接收器功能。
我正在将我的代码与其他教程代码进行比较,因为我一生都看不到问题。
我在 main.go 中有一个名为 application 的结构,我正在 main 函数中创建它的一个实例。
type application struct {
cnf cnf
logger *log.Logger
}
....
func main {
...
app := &application{
cnf: cfg,
logger: logger,
}
...
在同一个 main.go 文件中,我还有其他函数,它们是函数接收器,似乎工作正常,但我在一个单独的文件中有一个函数,在带有签名的包 main 中
func (app *application) sendSlackMessage(msg string) error {}
但是,当我尝试从 main 中的另一个函数调用它时,就像这样
err := app.sendSlackMessage(fmt.Sprintf("MESSAGE"))
我得到一个错误
app.sendSlackMessage undefined (type *application has no field or method SendSlackMessage)
我不确定问题是它在另一个文件中(尽管教程代码是这样做的)还是问题所在。
【问题讨论】:
-
您是否有机会使用
go run main.go执行代码?即编译和运行特定文件而不是整个包?go rundocs -
使用
go build并远离告诉您使用go run main.go的教程。