当前位置: 首页 > Web前端 > HTML

Go语言下载、安装、配置、使用

时间:2023-04-02 13:28:16 HTML

Go语言Go语言(Golang,TheGoProgrammingLanguage),是Google于2009年发布的第二个开源编程语言。2009年7月,Google发布了Simple语言,即用于开发Android应用程序。Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师RobPike说:我们开发Go是因为过去10多年软件开发的令人沮丧的困难。Go语言专门针对多处理器系统应用程序的编程进行了优化。用Go编译的程序可以匹敌C或C++代码的速度,并且更安全,支持并行进程。Go语言官网:https://golang.org(需要VPN接入)1、下载GoGo语言是跨平台的,支持Windows、Linux、MacOSX等系统,还提供了源代码,可以编译和使用安装在Windows上:go1.8.3。windows-amd64.msi(78MB)Linux:go1.8.3.linux-amd64.tar.gz(86MB)Mac:go1.8.3.darwin-amd64.tar.gz(85MB)(推荐)来源:go1.8.3.src.tar.gz(15MB)go-yu-yan-xia-zai-an-zhuang-pei-zhi-shi-yong-012。安装gosudotar-C/usr/local/-zxvfgo1.8.3.darwin-amd64.tar.gz注意:必须安装在/usr/local/目录下,因为/usr/local/go必须安装GOROOT说明:$ll/usr/local/go/total232-rw-r--r--1homerstaff33243May2504:14AUTHORS-rw-r--r--1homerstaff1366May2504:14CONTRIBUTING.md-rw-r--r--1名荷马员工45710May2504:14CONTRIBUTORS-rw-r--r--1名荷马员工1479May2504:14LICENSE-rw-r--r--1homerstaff1303May2504:14PATENTS-rw-r--r--1homerstaff1399May2504:14README.md-rw-r--r--1homerstaff7May2504:14VERSIONdrwxr-xr-x14荷马工作人员4765月25日04:14apidrwxr-xr-x5荷马工作人员1705月25日04:16bindrwxr-xr-x4位荷马员工1365月25日04:16blogdrwxr-xr-x44位荷马员工14965月25日04:14doc-rw-r--r--1位荷马员工56865月25日04:14favicon.icodrwxr-xr-x3homerstaff102May2504:14libdrwxr-xr-x16homerstaff544May2504:16miscdrwxr-xr-x7homerstaff238May2504:16pkg-rw-r--r--1homerstaff26May2504:14robots.txtdrwxr-xr-x68homerstaff2312May2504:14srcdrwxr-xr-x269homerstaff9146Jul2501:29testapi—目录,包含列表所有API,方便IDE使用bin--目录,存放编译好的可执行文件blog--目录,doc--目录,帮助文档lib--目录,misc--目录,pkg--目录,存放编译好的包文件pkg中的文件是Go编译的生成的src-目录存放项目源文件test-目录,以及示例代码注意:bin和pkg目录一般不需要创建,go命令会自动创建(如goinstall),只需要创建src目录。AUTHORS—文件,作者列表,用记事本打开.ico—文件,robots.txt—文件,使用robots.txt来阻止访问URL,参见https://support.google.com/we...Eclipse安装Go插件,在市场中搜索“go”,如如下图所示,安装GoClipsego-yu-yan-xia-zai-an-zhuang-pei-zhi-shi-yong-02注意:GoClipse插件开发的程序需要电脑开机才能生效重启,因为/etc/profile配置的环境变量会在重启电脑后生效。3、配置Govim/etc/profile添加配置:GOROOT=/usr/local/goexportPATH=$GOROOT/bin:$PATH让配置生效:source/etc/profile验证是否安装成功:$go版本go版本go1.8.3darwin/amd644。使用Go的基本语法Go语言中=和:=有什么区别=是赋值,:=是声明一个变量并赋值。//=use必须首先使用var声明。例如:varaa=100//orvarb=100//orvarcint=100//:=是声明和赋值,系统自动推断类型,不需要var关键字d:=1001)hello示例vimhello.gopackagemainimport"fmt"funcmain(){fmt.Printf("hellomimvp.com")}编译执行:gobuild./hello运行结果:$./hellohellomimvp.com2)爬取网页示例vimspider_web.go/***mimvp.com*2017.4.12**mimvp.com蜘蛛网*/packagemainimport("fmt""io/ioutil""net/http")funcmain(){response,_:=http.Get("http://mimvp.com")延迟response.Body.Close()body,_:=ioutil.ReadAll(response.Body)fmt.Println(string(body))fmt.Printf("len:%d\n",len(string(body)));}编译执行:$gobuildspider_web.go$./spider_web...len:156615.代理示例Go支持http和socks5,但不支持https和其中,当Go使用socks5代理,需要安装并引用“golang.org/x/net/proxy”。安装配置步骤如下:下载https://github.com/golang/netunzip,移动到/usr/local/go/src/golang.org/x/net/import("golang.org/x/net/proxy")Go语言代理示例如下(全部都经过测试,成功):/***mimvp.com*2017.7.20*golang使用http,socks5代理*/packagemainimport("fmt""io/ioutil""log""net/http""net/url""os""golang.org/x/net/proxy")//成功http//proxy_uri:="http://125.77.25.124:80"//mimvp_url:="http://mimvp.com"funcmain_1(proxy_uristring,mimvp_urlstring){proxy:=func(_*http.Request)(*url.URL,error){returnurl.Parse(proxy_uri)}transport:=&http.Transport{Proxy:proxy}client:=&http.Client{Transport:transport}resp,err:=client.Get(mimvp_url)iferr!=nil{fmt.Println("error:",err)返回}else{deferresp.Body.Close()body,_:=ioutil.ReadAll(resp.Body)fmt.Printf("%s\n",body)}}//成功http//proxy_uri:="http://125.77.25.124:80"//mimvp_url:="http://mimvp.com"funcmain_2(proxy_uristring,mimvp_urlstring){url_i:=url.URL{}url_proxy,_:=url_i.Parse(proxy_uri)transport:=&http.Transport{Proxy:http.ProxyURL(url_proxy)}client:=http.Client{Transport:transport}resp,err:=client.Get(mimvp_url)iferr!=nil{log.Fatalln(err)}else{deferresp.Body.Close()body,_:=ioutil.ReadAll(resp.Body)fmt.Printf("%s\n",body)}}//配置环境varablefuncmain_22(proxy_uristring,mimvp_urlstring){//url_i:=url.URL{}//url_proxy,_:=url_i.Parse("https://127.0.0.1:9743")os.Setenv("HTTP_PROXY","http://125.77.25.124:80")os.Setenv("HTTPS_PROXY","https://210.209.89.100:8081")c:=http.Client{/*Transport:&http.Transport{//Proxy:http.ProxyURL(url_proxy)}*/}resp,err:=c.Get("http://mimvp.com")iferr!=nil{log.Fatalln(err)}else{deferresp.Body.Close()body,_:=ioutil.ReadAll(resp.Body)fmt.Printf("%s\n",body)}}//指定代理ipfuncgetTransportFieldURL(proxy_addr*string)(transport*http.Transport){url_i:=url.URL{}url_proxy,_:=url_i.Parse(*proxy_addr)transport=&http.Transport{Proxy:http.ProxyURL(url_proxy)}return}//从环境变量$http_proxy或$HTTP_PROXY获取HTTP代理地址//Linux设置代理环境变量命令://http_proxy=http://125.77.25.124:80//https_proxy=https://210.209.89.100:8081funcgetTransportFromEnvironment()(transport*http.Transport){transport=&http.Transport{Proxy:http.ProxyFromEnvironment}return}funcfetch(mimvp_url,proxy_uri*string)(htmlstring){transport:=getTransportFieldURL(proxy_uri)client:=&http.Client{Transport:transport}req,err:=http.NewRequest("GET",*mimvp_url,nil)iferr!=nil{log.Fatal(err.Error())}resp,err:=client.Do(req)iferr!=nil{log.Fatal(err.Error())}ifresp.StatusCode==200{robots,err:=ioutil.ReadAll(resp.Body)resp.Body.Close()iferr!=nil{log.Fatal(err.Error())}html=string(robots)}else{html=""}return}//成功http//proxy_uri:="http://125.77.25.124:80"//mimvp_url:="http://mimvp.com"funcmain_3(proxy_uri字符串,mimvp_url字符串){html:=fetch(&mimvp_url,&proxy_uri)fmt.Println(html)}//成功socks5//1.下载https://github.com/golang/net//2.解压并移动到/usr/local/go/src/golang.org/x/net///3.import("golang.org/x/net/proxy")funcmain_socks5(proxy_socksstring,mimvp_urlstring){//创建一个socks5拨号器dialer,err:=proxy.SOCKS5("tcp",proxy_socks,nil,proxy.Direct)iferr!=nil{fmt.Println(os.Stderr,"can'tconnecttosocks5proxy:",err)os.Exit(1)}//设置一个http客户端//transport:=&http.Transport{}//transport.Dial=dialer.Dialtransport:=&http.Transport{Dial:dialer.Dial}client:=&http.Client{Transport:transport}resp,err:=client.Get(mimvp_url)iferr!=nil{log.Fatalln(err)}else{延迟resp.Body.Close()body,_:=ioutil.ReadAll(resp.Body)fmt.Printf("%s\n",body)}}funcmain(){//http代理proxy_uri:="http://125.77.25.124:80"mimvp_url:="http://mimvp.com"main_1(proxy_uri,mimvp_url)main_2(proxy_uri,mimvp_url)main_3(proxy_uri,mimvp_url)//socks5代理proxy_socks:="175.138.65.244:1080"main_socks5(proxyim_socksurl,m}本例中的代理均来自米扑代理,米扑代理提供专业优质的代理,支持http、https、socks4、socks5等协议,覆盖全球120多个国家和国内34个省市中国.代理质量和可用性非常高的Mimvp代理:https://proxy.mimvp.com