- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
看看这个 shell session ,我在其中用 Go 构建了一个简单的 hello world 程序。
$ cd ~/lab/hello/
$ ls
hello.go
$ cat hello.go
package main
import "fmt"
func main() {
fmt.Printf("hello, world\n")
}
$ go build
$ ./hello
hello, world
$ go env
GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH=""
GORACE=""
GOROOT="/usr/lib/go"
GOTOOLDIR="/usr/lib/go/pkg/tool/linux_amd64"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
CXX="g++"
CGO_ENABLED="1"
$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 8.7 (jessie)
Release: 8.7
Codename: jessie
这是我不明白的地方。教程在https://golang.org/doc/install#testing说我应该将我的 hello.go
文件放在 ~/go/src/hello。但我没有遵循这个。那么我的程序是如何编译的呢?如果我的程序以这种方式编译正常,为什么文档说我应该将我的源代码保存在 ~/go/src 或 $GOPATH/src 而这似乎无关紧要?
有没有真的需要把源码放到$GOPATH/src的场景?
最佳答案
标准的 Go 工具在 $GOPATH
子目录 src
、pkg
和 bin
中查找。例如,
currency.go
:
package main
import (
"fmt"
"time"
"golang.org/x/text/currency"
)
func main() {
t1799, _ := time.Parse("2006-01-02", "1799-01-01")
for it := currency.Query(currency.Date(t1799)); it.Next(); {
from := ""
if t, ok := it.From(); ok {
from = t.Format("2006-01-01")
}
fmt.Printf("%v is used in %v since: %v\n", it.Unit(), it.Region(), from)
}
}
输出:
$ go build currency.go
currency.go:7:2: cannot find package "golang.org/x/text/currency" in any of:
/home/peter/go/src/golang.org/x/text/currency (from $GOROOT)
/home/peter/gopath/src/golang.org/x/text/currency (from $GOPATH)
$
如果我们将丢失的包放在 $GOPATH/src
中,标准的 Go 工具会找到它。
$ go get golang.org/x/text/currency
$ go build currency.go
$ ./currency
GBP is used in GB since: 1694-07-07
GIP is used in GI since: 1713-01-01
USD is used in US since: 1792-01-01
$
关于go - 什么时候真的有必要将 Go 源代码放在 $GOPATH/src 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43498585/
我正在使用 this solution在二进制矩阵中找到与图像边界对齐的矩形。假设现在我想找到一个不与图像边框对齐的矩形,并且我不知道它的方向;找到它的最快方法是什么? 为了示例,让我们寻找一个仅包含
else: 行在这个 Python 程序中是否正确/必要? from random import randrange for n in range(10): r = randrange(0,1
在 TDPL 7.1.5.1 中讨论了将 Widget w2 分配给 w1 并且作者指出“将 w2 逐个字段分配给 w1 会将 w2.array 分配给 w1.array——一个简单的数组边界分配,而
我是一名优秀的程序员,十分优秀!