我正在玩 Google Go,我玩得很开心 (!),但我在使用包子系统时遇到了一些问题。
我在 Mac OS X Lion 上运行 Go 1.0.1。我还构建了各种没有问题的单文件程序(我还使用 html/templates 构建了一个没有问题的小型 webapp,它编译和运行没有任何错误)。
我已经定义了一个“可重复使用”的包(even.go):
package even
func Even(i int) bool {
return i % 2 == 0
}
func Odd(i int) bool {
return i % 2 == 1
}
和一个消费者程序(useeven.go):
package main
import (
"./even"
"fmt"
)
func main() {
a := 5
b := 6
fmt.Printf("%d is even %v?\n", a, even.Even(a))
fmt.Printf("%d is odd %v?\n", b, even.Odd(b))
}
但是当我使用
编译“库”时go build even.go
我什么都没有……没有错误,没有消息……会发生什么?
我应该怎么做?
最佳答案
您的问题“我该怎么做?”的答案在 How to Write Go Code. 中有解释这是非常重要的东西,值得一看。
go build
的行为可能看起来令人费解,但实际上对于命令行程序来说是常规的——没有输出意味着程序运行成功。那么它做了什么?为此,您的答案在 go help build
... Otherwise build compiles the packages but discards the results, serving only as a check that the packages can be built.
什么,你想要更多?当然。 “如何编写 Go 代码”解释了这样做的好方法。为了快速修复您的程序,我将解释 go 命令期望每个包和每个可执行程序位于单独的目录中。如果您只是在 useeven.go 的位置下创建一个名为 even 的目录,然后将 even.go 移动到该目录,那么 go run useeven.go
应该可以正常运行。
关于compilation - 在 Go 中构建和引用我自己的本地包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10416752/