golang 小程序,golang顺序执行和并发执行对比

使用顺序和并发2种方式 正则表达式

并发就是快
package main


import "io/ioutil"

import "net/http"

import "fmt"

import "regexp"

import "time"


func testget(url string) string{

resp, err := http.Get(url)

if err != nil {

fmt.Println(err)

}

body, err := ioutil.ReadAll(resp.Body)

if err != nil {

fmt.Println(err)

}

return get_title(string(body))

}


func testget2(url string, chann chan string ){

resp, err := http.Get(url)

if err != nil {

fmt.Println(err)

}

body, err := ioutil.ReadAll(resp.Body)

if err != nil {

fmt.Println(err)

}

chann <- get_title(string(body))

}



func get_title(body string) string{

re := regexp.MustCompile("<title>(.*)</title>")

a := re.FindStringSubmatch(body)

if len(a) != 0{

return a[1]

}

return ""

}


func current_unixtimestamp() int32{

return int32(time.Now().Unix())

}


func main(){


urllist := [] string {"http://www.baidu.com","http://www.17173.com","http://www.hao123.com","http://www.126.com","http://www.oschina.net","http://www.simapple.com"}


single_start := current_unixtimestamp()

for _,v := range urllist {

fmt.Println(v)

baidubody := testget(v)

fmt.Println(baidubody)

}

single_end := current_unixtimestamp()

fmt.Printf("use %d seconds\n***********************************\n", single_end-single_start)




chann := make(chan string, 300)

single_start = current_unixtimestamp()

for _,v := range urllist {

fmt.Println(v)

go testget2(v, chann)

go fmt.Println(<-chann)

}

single_end = current_unixtimestamp()

fmt.Printf("use %d seconds", single_end-single_start)

}