zoukankan      html  css  js  c++  java
  • Go_ go mod 命令解决墙的问题

    简介

    由于众所周知的原因,在下载一些库的时候会下载不了,比如 golang.org/x/... 相关的库。为此,网上出现了很多解决方案。
    从 Go1.11 开始,Go 引入了 module,对包进行管理,通过 go mod 命令来进行相关操作。这里,我们基于 Go 目前最新版本 Go1.12,通过 module 来搭建 Goland 开发环境。

    创建Project

    打开 Goland,创建 project,左侧选择 Go Modules(vgo),在 Proxy 中输入:https://athens.azurefd.net (这是下载墙外包的关键),如果不行,试试输入 https://goproxy.io

    编写测试代码

    我们来试验通过 Colly 抓取数据
    我们通过 Goland 创建一个 main.go 文件,粘贴上如下代码:

    package main
    
    import (
        "fmt"
        "github.com/gocolly/colly"
    )
    
    func main() {
        c := colly.NewCollector()
    
        // Find and visit all links
        c.OnHTML("a[href]", func(e *colly.HTMLElement) {
            e.Request.Visit(e.Attr("href"))
        })
    
        c.OnRequest(func(r *colly.Request) {
            fmt.Println("Visiting", r.URL)
        })
    
        c.Visit("http://go-colly.org/")
    }
    

    这时候 Goland 并不能识别 github.com/gocolly/colly 这个包。我们执行:Run -> Run 'go build main.go',一段时间后,在我们项目下会生成 go.sum 文件,打开该文件,会发现把依赖都下载下来了。因为 colly 包依赖 golang.org/x/net 包,所以这个包也下载了。我们很方便的解决了“墙”的问题。

    非 Goland 下的处理

    对于非 Goland 下的情况,我们可以通过设置环境变量 GOPROXY 来达到下载“墙”外包的目的:

    export GOPROXY=https://athens.azurefd.net
    

    module 模式还是很好用的,建议大家都升级到最新版本,尝试使用 module。

  • 相关阅读:
    Linux下GCC的使用
    Hadoop c++开发
    如何区别PeekMessage&GetMessage SendMessage&PostMessage
    二叉树的三种遍历方式的循环和递归的实现方式
    各种排序算法的代码
    各种排序算法的总结
    EAX、ECX、EDX、EBX寄存器的作用
    浮点型在内存当中的存储方式
    error LNK2001: 无法解析的外部符号
    线程通信
  • 原文地址:https://www.cnblogs.com/Paul-watermelon/p/11230564.html
Copyright © 2011-2022 走看看