如何在Golang中设置GODEBUG环境变量,以便我可以将godebug与net / http

时间:2016-08-24 00:20:23

标签: go

我想使用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”)来设置这些设置。根据位于here的说明

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版本:

go go go7.7 linux / amd64

1 个答案:

答案 0 :(得分:0)

这可能不是正确的做事方式。但我将http2包从$ GOROOT / src / vendor下的供应商目录复制到我的$ GOPATH / src下的src目录。

如果有人对参考供应商目录的正确方法有任何进一步的意见,请添加您的想法。只需将我的解决方法放在这里以防其他人遇到同样的问题。

编辑:实际上一个'更好'的方法是做一个ln -s ..src / vender / github_org来... / src / github_org