go-程式碼收集-net/http客戶端長連線
阿新 • • 發佈:2019-02-19
- net/http客戶端長連線
新建一個http client,後面複用這個client,藉助go的高度整合包,來複用連線。
client.go
package main
import (
"crypto/tls"
"io/ioutil"
"log"
"net/http"
"sync"
)
func main() {
tr := &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
DisableCompression: false ,
}
client := &http.Client{Transport: tr}
var wg sync.WaitGroup //用來在後面同步所有協程結束
for i := 0; i < 10; i++ {
wg.Add(1)//增加計數器
go func() {
defer wg.Done()//減少計數器
resp, err := client.Get("https://localhost:54321/hello")
if err != nil {
log.Println(err)
}
defer resp.Body.Close()
slurp, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
log.Printf("Got: %q", slurp)
}()
}
wg.Wait()//等待所有協程結束
}
- 字串轉整形
定製版字串轉整形,直接如整形字串直接轉整形
func strconvStrFloatToInt(strfloat string ) (int, error) {
value := 0
if 0 == len(strfloat){
return value, errors.New("this is a empty string")
}
numStrList := strings.Split(strfloat, ".")
valueInt, err := strconv.Atoi(numStrList[0])
if nil != err {
return value, err
}
value = valueInt * 100
if 2 == len(numStrList) {
valueInt, err := strconv.Atoi(numStrList[1])
if nil != err {
return value, err
}
if 1 == len(numStrList[1]) {
value = value + valueInt*10
} else {
value = value + valueInt
}
}
return value, nil
}