compilation - 在 Go 中构建和引用我自己的本地包

标签 compilation package go

我正在玩 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/

相关文章:

java - 从不同的JAVA包中调用方法

linux - Ubuntu 15.10 中 KDE Plasma 桌面安装错误 "All Shell Packages Missing"

go - 如何对 init() 函数进行基准测试

go - 使用 gonum 进行无放回加权采样

c - 如何使我的检查生成器输出准确的内容而不是 C 中的 "Zero"

java - Java 9 是否支持提前编译?

compilation - 如何编译ADB(Android调试桥)的源代码?

linker - 解释 readelf -S 输出

java - 如何将包含 java 文件的文件夹放入 Eclipse 的包资源管理器中

regex - 解析参数列表中以逗号分隔的逗号分隔值