- 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
}