我执行测试时遇到以下错误。这在以前工作。不确定我需要做什么来修复此错误。
golang.org/x/crypto/ripemd160/ripemd160block.go:12:2: cannot find package "math/bits" in any of:
/usr/local/Cellar/[email protected]/1.8.7/libexec/src/math/bits (from $GOROOT)
Go 1.9包含一个新的包,math / bits,以及用于操作位的优化实现。在大多数体系结构中,编译器还可以识别此程序包中的函数,并将其视为内在函数以获得额外的性能。
你需要Go版本1.9或更高版本。
我在$HOME
目录中从源代码安装了几个版本的Go:~/go1.4
,~/go1.8
,~/go1.9
,~/go1.10
和~/go
(devel)。将src/math/bits
文件夹从go1.9或更高版本复制到go1.8。从go1.8/src
运行go1.8 install -v math/bits
。
go1.8
:
#!/bin/sh
# $HOME/bin/go1.8
export GOARCH=amd64
export GOOS=linux
export GOROOT=$HOME/go1.8
export GOBIN=$GOROOT/bin
exec $GOBIN/go "$@"
输出:
$ cd ~/go1.8/src
$ go1.8 install -v math/bits
math/bits
例如,
package main
import (
"fmt"
"math/bits"
)
func main() {
fmt.Println(bits.UintSize)
}
输出:
$ go1.8 run bits.go
64
您需要为gopath复制包“math / bits”。一种方法是:
<goprojectpath>/src/math
(cp -r ...)
从<goroot_1.10+>/src/math/bits
复制到<goprojectpath>/src/math
govendor add +external
或者将新的golang版本安装到1.10+。