找不到包数学/位

问题描述 投票:1回答:2

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

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
2个回答
4
投票

Go 1.9 Release Notes

New bit manipulation package

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

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+。

© www.soinside.com 2019 - 2024. All rights reserved.