Golang Gorilla Mux服务器本地包导入并未使用问题

时间:2018-04-12 19:56:41

标签: go gorilla

我正在使用Gorilla Mux测试一个简单的服务器应用程序。运行应用程序时,我一直收到未定义的错误。这是应用程序的结构

MAX(ordnr)

main.go

src/ptest/
├── app
│   └── app.go
└── main.go

app.go

package main

import (
    "fmt"
    "ptest/app"
)

func main() {
    fmt.Println("Hello Testing App")
    app := App{}
}

正如您所看到的,我有package app import ( "fmt" "log" "net/http" "github.com/gorilla/mux" ) type App struct { Router *mux.Router } func (A *App) Run() { fmt.Println("Listening at :8080") log.Fatal(http.ListenAndServe(":8080", A.Router)) } 通过从main导入来初始化app。但是当我ptest/app

时,我收到了一个错误
go run *go

这是我的# command-line-arguments ./main.go:5:2: imported and not used: "ptest/app" ./main.go:10:9: undefined: App 。我想知道我的环境是否不对劲?

go env

1 个答案:

答案 0 :(得分:5)

按包名使用App{}结构。您正在导入包但不使用它。 App结构在app包中声明。这就是错误的原因。

# command-line-arguments
./main.go:5:2: imported and not used: "ptest/app"
./main.go:10:9: undefined: App

在您的计划中,您尝试初始化App{}中不存在的main.go

package main

import (
    "fmt"
    "ptest/app"
)

func main() {
    fmt.Println("Hello Testing App")
    app := app.App{}
}

在Golang Spec中对Qualified Identifiers

进行了详细描述
  

限定标识符是使用包名限定的标识符   字首。包名称和标识符都不能为空。

QualifiedIdent = PackageName "." identifier .
  

合格标识符访问不同包中的标识符,   必须导入。必须导出和声明标识符   在该软件包的软件包块中。

math.Sin    // denotes the Sin function in package math