【发布时间】:2017-10-09 11:10:44
【问题描述】:
我已经开始使用 Go 并正在尝试关注这个 tutorial。一切构建正确,但当我尝试运行它时,我收到了无法找到 makeRouter() 的错误。
我查看了一些其他问题,like this one,并查看了文档,但我找不到我的设置有什么问题。
我的文件夹结构:
.../wattagebazooka/
|- wattagebazooka.go
|- router.go
|- handler.go
代码
wattagebazooka.gopackage main
import (
"database/sql"
"fmt"
"log"
"net/http"
"runtime"
_ "github.com/lib/pq"
)
// init sets runtime settings.
func init() {
// Verbose logging with file name and line number
log.SetFlags(log.Lshortfile)
// Use all CPU cores
runtime.GOMAXPROCS(runtime.NumCPU())
}
var db *sql.DB
func main() {
db = openDB()
defer db.Close()
r := makeRouter()
http.Handle("/", r)
}
func openDB() *sql.DB {
dbName := "wattagebazooka"
db, err := sql.Open("postgres", fmt.Sprintf("user=ts password= dbname=%s host=127.0.0.1", dbName))
if err != nil {
log.Fatalf("Error connecting to the %s database as user ts: %v", dbName, err)
}
return db
}
路由器.go
package main
import "github.com/gorilla/mux"
func makeRouter() *mux.Router {
r := mux.NewRouter()
r.HandleFunc("/user/me", wrapHandler(userHandler)).Methods("GET")
r.HandleFunc("/text", wrapHandler(textHandler)).Methods("POST")
r.HandleFunc("/text/{hash}", wrapHandler(textHashHandler)).Methods("GET")
return r
}
构建
> Environment:
> GOROOT=/usr/local/go
> GOPATH=/Users/ts/Developments/gocode
> Directory: /Users/ts/Developments/gocode/src/github.com/wattagebazooka/wattagebazooka
> Command: /usr/local/go/bin/go build -v
> Output:
github.com/wattagebazooka/wattagebazooka
> Elapsed: 0.708s
> Result: Success
运行
> Environment:
> GOROOT=/usr/local/go
> GOPATH=/Users/ts/Developments/gocode
> Directory: /Users/ts/Developments/gocode/src/github.com/wattagebazooka/wattagebazooka
> Command: /usr/local/go/bin/go run -v /Users/ts/Developments/gocode/src/github.com/wattagebazooka/wattagebazooka/wattagebazooka.go
> Output:
command-line-arguments
# command-line-arguments
./wattagebazooka.go:28:7: undefined: makeRouter
> Elapsed: 0.244s
> Result: Error
【问题讨论】:
标签: go