报错信息
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x38 pc=0x400f21]
goroutine 6 [running]:
runtime.panic(0x5f85e0, 0x877828)
/usr/local/go/src/pkg/runtime/panic.c:266 +0xb6
main.func·001()
/root/go/query.go:46 +0x61
created by main.gethtml
/root/go/query.go:48 +0x67
goroutine 1 [chan receive]:
main.main()
/root/go/query.go:59 +0x176
goroutine 3 [select]:
net/http.(*Transport).getConn(0xc210059200, 0xc210072030, 0xc210072030, 0x0, 0x0)
/usr/local/go/src/pkg/net/http/transport.go:424 +0x24d
net/http.(*Transport).RoundTrip(0xc210059200, 0xc210070000, 0xc21006f094, 0x0, 0x0)
/usr/local/go/src/pkg/net/http/transport.go:182 +0x340
net/http.send(0xc210070000, 0x7f19e12d42b8, 0xc210059200, 0x0, 0x0, ...)
/usr/local/go/src/pkg/net/http/client.go:168 +0x37f
net/http.(*Client).send(0x87c540, 0xc210070000, 0x12, 0x41ff61, 0x8)
/usr/local/go/src/pkg/net/http/client.go:100 +0xd9
net/http.(*Client).doFollowingRedirects(0x87c540, 0xc210070000, 0x6aac88, 0x0, 0x0, ...)
/usr/local/go/src/pkg/net/http/client.go:294 +0x671
net/http.(*Client).Get(0x87c540, 0x6616b0, 0x12, 0x7f19e1150f70, 0x0, ...)
/usr/local/go/src/pkg/net/http/client.go:248 +0xb2
net/http.Get(0x6616b0, 0x12, 0x6616b0, 0x0, 0x0)
/usr/local/go/src/pkg/net/http/client.go:225 +0x50
main.func·001()
/root/go/query.go:44 +0x4f
created by main.gethtml
/root/go/query.go:48 +0x67
代码如下
package main
import (
"net/http"
"fmt"
"runtime"
)
var urllist = [...]string{
"http://www.baidu.com",
"http://www.google.com",
"http://www.360.com",
"http://www.qq.com",
"http://www.sina.com",
"http://www.sohu.com",
"http://www.jd.com",
"http://www.taobao.com",
"http://www.chingyu.net",
"http://www.dajie.com",
"http://www.56.com",
"http://www.163.com",
"http://www.weibo.com",
"http://www.263.com",
"http://www.duowan.com",
"http://www.duokan.com",
"http://www.youku.com",
"http://www.tudou.com",
"http://www.zhihu.com",
"http://www.21cn.com",
"http://www.chinaunix.com",
"http://www.oschina.com",
"http://www.iteye.com",
}
var worker = runtime.NumCPU()
type query struct {
url chan string
resp chan []string
//resp chan *http.Response
}
func gethtml(q query) {
go func() {
resp,_ := http.Get( <-q.url)
//q.resp <- resp
q.resp <- resp.Header["Server"]
resp.Body.Close()
}()
}
func main() {
runtime.GOMAXPROCS(runtime.NumCPU())
q := query{make(chan string, len(urllist)), make(chan []string, len(urllist))}
for _,i := range urllist{
gethtml(q)
q.url <- i
}
for _,_ = range urllist {
fmt.Println(<-q.resp)
}
}
楼主是不是想并发请求服务器,获取http头的server
把你的代码改了下
结果