go - 为什么代理未定义?

标签 go

func check(e error) {
  if e != nil {
    panic(e)
  }
}
func main() {
  addr := flag.String("addr", ":9999", "server addr")
  flag.Parse()
  http.HandleFunc("/", WhitelistHandler)
  http.ListenAndServe(*addr, nil)
}
func WhitelistHandler(w http.ResponseWriter, r *http.Request) {
  pwd, _ := os.Getwd()
  dat, err := ioutil.ReadFile(pwd + "/whitelist.pac")
  check(err)
  p := strings.Split(r.URL.Path, "/")
  if len(p) > 1 {
    proxy := p[1]
  } else {
    proxy := "127.0.0.1:9998"
  }
  if strings.Contains(p[0], "socks") {
    io.WriteString(w, string(`var wall_proxy = "SOCKS5 `) + string(proxy) + string(";SOCKS ") + string(proxy) + string(`;";`) + string("\n") + string(dat))
  } else {
    io.WriteString(w, string(`var wall_proxy = "PROXY `) + string(proxy) + string(`";`) + string("\n") + string(dat))
  }
}

如果我运行这个我会得到:

./gowhitelist.go:36:68: undefined: proxy
./gowhitelist.go:38:67: undefined: proxy

最佳答案

Why is the proxy undefined?

因为它被if语句隐藏了。

您需要在if 语句之前定义proxy 变量:

proxy := "" // or var proxy string
if len(p) > 1 {
  proxy = p[1]
} else {
  proxy = "127.0.0.1:9998"
}

关于go - 为什么代理未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47979037/

相关文章:

go - 单值上下文错误中的多值返回变量和多返回函数

go - 如何避免为类似的 golang 结构重新实现 sort.Interface

go - Go是否容易受到缓冲区溢出的影响

bash - 在 Docker 容器中启动 Golang Web 服务器

javascript - GO - html 文件无法加载外部 js 文件

go - 如何安全地将我的数据库结果缓存在内存缓存中

azure - 如何使用 Go SDK 列出 Azure 存储中的共享

memory - 去内存分析

go - 在我的案例中,如何以正确的方式测试方法?

algorithm - Golang 斐波那契计算出现关闭