我是Go的新人.我非常喜欢这种语言,但我很快意识到由于程序大小的增加,我需要开始分割文件.
go run main.go (main.go是我的main()函数的文件)
没有工作,我打了一段时间的障碍,因为我不知道如何使我的程序工作.
一些快速搜索引导我得到答案
go run main.go other.go ..
通过键入我所package main包含的所有文件,我可以运行编程.然而,每次这样做都非常麻烦和令人沮丧.
我写了以下自我回答的问题,以防止像我这样可能再次遇到这个障碍的人.
我对golang很新,这应该是一个简单的答案,但我试着搜索每一个没有运气的地方.
如何在不同的.go包/文件中访问main.go中声明为/ init的全局变量?继续告诉我变量是未定义的(我知道全局变量很糟糕,但这只是用作时间戳)
在main.go
var StartTime = time.Now()
func main(){...}
Run Code Online (Sandbox Code Playgroud)
尝试在不同的.go文件中访问StartTime,但一直未定义StartTime
我已经开始使用Go,并且正在尝试按照本教程进行操作。一切构建正确,但是当我尝试运行它时,出现了makeRouter()找不到的错误。
我看了一些其他问题,例如this,并检查了文档,但是我找不到我的设置有什么问题。
.../wattagebazooka/
|- wattagebazooka.go
|- router.go
|- handler.go
Run Code Online (Sandbox Code Playgroud)
package 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, …Run Code Online (Sandbox Code Playgroud)