如何引用同一个包中的结构

Posted

技术标签:

【中文标题】如何引用同一个包中的结构【英文标题】:How to reference the struct in the same package 【发布时间】:2020-12-31 06:34:04 【问题描述】:

我正在尝试使用两个文件构建一个 Web 应用程序。

app.gomain.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 .

【讨论】:

以上是关于如何引用同一个包中的结构的主要内容,如果未能解决你的问题,请参考以下文章

如何让引用java缺省包的类

xcassets 中的所有图像,然后如何加载从我的包中的 nib 引用的图像

java中,怎么在一个包中引用另一个包的同名类

在java中怎样在有名包中引用无名包中的类

纯AS3项目中如何引用fl包中的类

使用 FHIR nuget 包通过引用查找包中的资源