如何在 Golang 中设置 GODEBUG 环境变量,以便可以将 godebug

我想使用Godebug逐步完成我的程序。但是,因为我使用的是 net/http,所以会出现以下错误:


/home/heath/go/src/net/http/h2_bundle.go:45:2: could not import golang_org/x/net/http2/hpack (cannot find package "golang_org/x/net/http2/hpack" in any of:

    /home/heath/go/src/golang_org/x/net/http2/hpack (from $GOROOT)

/x/net/http2/hpack 确实存在于我的 GOPATH 但在 ~heath/go/src/golang.org ...不是 golang_org (不确定那里发生了什么)


我读过这个错误是因为 godebug 还不支持 http2(找不到源)。


我试图通过在 init() 和命令行中设置 GODEBUG env 来禁用 http2server 和 http2client。我还确认这些设置是通过执行 fmt.Println("GODEBUG", os.Getenv("GODEBUG") 来设置的。按照位于此处的说明


GODEBUG=http2client=0  # disable HTTP/2 client support

GODEBUG=http2server=0  # disable HTTP/2 server support

我复制错误的简单代码示例是:


  package main


  import "fmt"

  import "net/http"

  import "os"


  func init() {


      os.Setenv("GODEBUG", "http2server=0,http2client=0")


  }


  func main() {


      fmt.Println("GODEBUG", os.Getenv("GODEBUG"))


      _ = "breakpoint"

      fmt.Println("Hello, World!")

      http.ListenAndServe(":8080", nil)

  }


godebug run example.go

我正在运行 Go 版本:


去版本 go1.7 linux/amd64


HUX布斯
浏览 347回答 1
1回答

叮当猫咪

这可能不是正确的做事方式。但是我将 http2 包从我的 $GOROOT/src/vendor 下的供应商目录复制到了我的 $GOPATH/src 下的 src 目录。如果有人对引用供应商目录的正确方法有任何进一步的意见,请添加您的想法。只是把我的解决方法放在这里,以防其他人遇到同样的问题。编辑:实际上一种“更好”的做事方式是对 ../src/github_org 执行 ln -s ..src/vender/github_org
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go