如何引用同一个包中的结构
Posted
技术标签:
【中文标题】如何引用同一个包中的结构【英文标题】:How to reference the struct in the same package 【发布时间】:2020-12-31 06:34:04 【问题描述】:我正在尝试使用两个文件构建一个 Web 应用程序。
app.go
和 main.go
都在同一个目录中。
app.go
package main
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
"github.com/gorilla/mux"
)
type App struct
Router *mux.Router
DB *sql.DB
func (a *App) Initialize(username, password, server, port, dbName, cacheAddr, cachePass string)
func (a *App) Run(addr string)
main.go
package main
func main()
a := App
// more code here
我以为我的 main.go
文件可以识别 App
,但我的编辑抱怨 App
是未声明的名称
这两个文件都在同一个主包中,但我不确定出了什么问题。有人可以帮我吗?谢谢!
【问题讨论】:
运行 go run 时是否正常运行。还是去运行 main.go app.go ? 您使用的是哪个编辑器? vscode 如果我执行“go run main.go”,它会抱怨同样的错误 在运行程序时也应该传递 app.go。像这样试试 go run main.go app.go 永远不要使用go run main.go
。请改用go run .
。
【参考方案1】:
我假设您从 cmets 运行以下命令:go run main.go
。这只会加载main.go
中的代码(以及import
语句中包含的文件)。要告诉 Go 加载当前目录中的所有 .go
文件,请运行以下命令:
go run .
类似地,要告诉 VSCode 加载所有文件,这样启动它:
code .
【讨论】:
以上是关于如何引用同一个包中的结构的主要内容,如果未能解决你的问题,请参考以下文章