找不到包数学/位

时间:2018-03-19 18:34:24

标签: go

我执行测试时遇到以下错误。这在以前工作。不确定我需要做些什么来修复此错误。

golang.org/x/crypto/ripemd160/ripemd160block.go:12:2: cannot find package "math/bits" in any of:
    /usr/local/Cellar/go@1.8/1.8.7/libexec/src/math/bits (from $GOROOT)

2 个答案:

答案 0 :(得分:4)

  

Go 1.9 Release Notes

     

New bit manipulation package

     

Go 1.9包含一个新的包,数学/位,优化   用于操作位的实现。在大多数架构上,   编译器还可以识别此包中的函数   并被视为内在因素以获得额外的表现。

您需要使用Go 1.9或更高版本。

我在$HOME目录中从源代码安装了几个Go版本:~/go1.4~/go1.8~/go1.9~/go1.10和{{1} (开发)。将~/go文件夹从go1.9或更高版本复制到go1.8。来自src/math/bits运行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)
}

答案 1 :(得分:0)

您需要为gopath复制软件包“ math / bits”。 一种方法是:

  1. 下载golang 1.10 +
  2. 制作目录<goprojectpath>/src/math
  3. (cp -r ...)<goroot_1.10+>/src/math/bits复制到<goprojectpath>/src/math
  4. 再试一次:govendor add +external

或将新的golang版本安装到1.10 +。