博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Go语言实例系列【 获得url实例】
阅读量:7210 次
发布时间:2019-06-29

本文共 1396 字,大约阅读时间需要 4 分钟。

hot3.png

package mainimport (	"os"	"net/http"	"fmt"	"io/ioutil"	"strings")func main(){	for _,arg :=range os.Args[1:]{		if !strings.HasPrefix(arg,"http://"){ //检查输入的url 中是否有协议前缀			arg= "http://"+arg		}		res,err := http.Get(arg)		if err !=nil{  //遇到错误  返回状态码并且退出			fmt.Fprint(os.Stderr,"fetch: %s:%v\n",err,res.Status)			os.Exit(1)		}		body,err := ioutil.ReadAll(res.Body)//读取数据流  存入 body中		res.Body.Close()		if err != nil{ //遇到错误  返回状态码并且退出			fmt.Fprint(os.Stderr,"fetch %s:%v:$s",arg,err,res.Status)			os.Exit(1)		}		fmt.Printf("%s:$s",body,res.Status)	}}

命令行中输入  go build xxx.go

./xxx  www.baidu.com

 

以上是单线程的例子接下来使用go 关键字 开发一个多线程的

package mainimport (	"os"	"time"	"fmt"	"net/http"	"io"	"io/ioutil"	"strings")func main(){	start := time.Now()	ch := make(chan string)	for _,url :=range os.Args[1:]{		go fetch(url,ch)	}	for range os.Args[1:]{		fmt.Println(<-ch)	}	fmt.Printf("%.2fs elapsed\n",time.Since(start).Seconds())}func fetch(url string,ch chan<- string){	start := time.Now()	if(!strings.HasPrefix(url,"http://")){		url ="http://"+ url	}	res,err := http.Get(url)	if err != nil{		ch <- fmt.Sprint(err)		return	}	nbytes,err := io.Copy(ioutil.Discard,res.Body)	res.Body.Close()	if err != nil{		ch <- fmt.Sprint("while rading %s:$v",url,err)		return	}	secs := time.Since(start).Seconds()	ch <- fmt.Sprint("%.2fs %7d %s",secs,nbytes,url)}

支持多个链接

尝试一下  还是蛮好玩的

转载于:https://my.oschina.net/raojiangjin/blog/1556880

你可能感兴趣的文章
利用ftp服务器实现无人值守的安装
查看>>
Vbs脚本编程简明教程之六
查看>>
德国罗森伯格荣获2013年度中国综合布线十大品牌以及数据中心标准化产品应用奖...
查看>>
使用vue开发项目需要注意的问题和可能踩到的坑
查看>>
webpack 模块标识符(Module Identifiers)
查看>>
PHP有前途吗?
查看>>
sm1、sm2、sm3、sm4简单介绍
查看>>
精读《Optional chaining》
查看>>
jQuery选择器
查看>>
c++——四种强转方式 static_cast dynamic_cast const_cast reinterpret_cast
查看>>
Swift 学习
查看>>
【HDU】6148 Valley Numer 数位DP
查看>>
windows下使用hbase/opencv/ffmpeg小记
查看>>
有害的“这样效率最高”思维
查看>>
CodeForces 438D 线段树 剪枝
查看>>
PG,PL,SE,PM都是什么意思,职责划分
查看>>
MyEclipse8.6安装svn(非link方式)
查看>>
SecureCRT恢复默认字体
查看>>
Ubuntu下安装、卸载notepad++
查看>>
Windows Azure上的Odoo(OpenERP)-1.创建Ubuntu虚拟机,安装PostgreSQL 数据库
查看>>