-4

我的代码如下所示:

应用程序.go

package main

import (
    "github.com/go-martini/martini"
)

func main() {
    app := martini.Classic()

    app.Group("/books", func(r martini.Router) {

        r.Get("/:id", getBooks)
        r.Post("/new", newBook)
        r.Put("/update/:id", updateBook)
        r.Delete("/delete/:id", deleteBook)
    })

    app.RunOnAddr(":8080")
}

main.go

package main

import "github.com/go-martini/martini"

func getBooks() string {

    return "get books api called"
}

func newBook() string {
    return "Psot book api called"
}

func updateBook(params martini.Params) string {
    return "put api called " + params["id"]
}

func deleteBook(params martini.Params) string {
    return "delete api called " + params["id"]
}

但不知何故,当我运行代码时,它给了我以下错误:

./app.go:16:17: undefined: getBooks ./app.go:17:18: undefined: newBook ./app.go:18:24: undefined: updateBook ./app.go:19:27: undefined: deleteBook

那么有没有办法解决这个问题呢?

项目结构如下:

goProject
---->app.go
---->main.go
4

1 回答 1

3

有两个问题:

#1

您需要将这两个文件放在同一个目录中,并具有相同的包名;即,main

#2

您需要编译并执行此目录中的所有文件,您可以使用以下任一方法:

  • go run ./...执行此目录中的所有文件,或者,

  • go run app.go main.go只执行这两个文件。


或者,正如@mkopriva 所建议的那样,您可以将所有处理程序函数移动并导出到不同的包中,让我们调用它package handlers并将这个包导入您的main应用程序中。

于 2019-03-20T12:24:22.883 回答