将“main”包导入为库(根据_The Go 编程语言_)

Nic*_*teo 1 import program-entry-point package go

在Go 编程语言的第 308 页上,它说

名为 main 的包通常会生成可执行程序,但它也可以作为库导入。

但是当我尝试时,我收到一个错误:imp.go:5:5: import "foo" is a program, not an importable package

那么……他们在说什么?如何将主包导入为库?

我的试用代码只是:

imp.go

package main

import (
    "fmt"
    "foo"
)

func main() {
    fmt.Println(foo.Hi)
}
Run Code Online (Sandbox Code Playgroud)

foo/foo.go

package main

import "fmt"

var Hi int = 3

func main() {
    fmt.Printf("Hi %d!\n", Hi)
}
Run Code Online (Sandbox Code Playgroud)

fst*_*nis 6

相关:从其他包访问主包

我最好的猜测是,这本书写成时确实如此,但后来就变得不可能了。golang/go#4210是相关问题,似乎阻止其工作的更改发生在 2015 年中期,而该书仅在几个月后出版。