本文主要總結(jié)的是我在編寫golang應(yīng)用時使用到的代碼片段,提供出來以備以后使用,也給需要的朋友們以參考學(xué)習(xí),下面話不多說,來看看詳細(xì)介紹:
一、通過http package發(fā)送user:passwd信息
發(fā)送類似于 curl -u 的請求 client := http.Client{} req, err := http.NewRequest("GET", url>, nil) req.SetBasicAuth(username>, userpasswd>) if err != nil { log.Fatal(err) } resp, err := client.Do(req) if err != nil { log.Fatal(err) } content, err := ioutil.ReadAll(resp.Body) if err != nil { log.Fatal(err) }
二、golang通過反射將未知對象轉(zhuǎn)換為array
func interfaceSlice(slice interface{}) []interface{} { s := reflect.ValueOf(slice) if s.Kind() != reflect.Slice { panic("InterfaceSlice() given a non-slice type") } ret := make([]interface{}, s.Len()) for i := 0; i s.Len(); i++ { ret[i] = s.Index(i).Interface() } return ret }
三、Mux 獲取Get Query參數(shù)
vals := r.URL.Query() oriDriver, ok := vals["driver"]
四、Mux 跨域訪問代碼
methodsOk := handlers.AllowedMethods([]string{"GET", "HEAD", "POST", "PUT", "OPTIONS"}) headersOk := handlers.AllowedHeaders([]string{"X-Requested-With"}) originsOk := handlers.AllowedOrigins([]string{"*"}) log.Println(http.ListenAndServe(":8000", handlers.CORS(headersOk, originsOk, methodsOk)(r)))
五、遞歸查找文件
func readAPK(path string, apk map[string]int) { // fmt.Println("處理", path) files, _ := ioutil.ReadDir(path) for _, file := range files { // fmt.Println(file.Name(), file.IsDir()) if file.IsDir() { readAPK(path+"/"+file.Name(), apk) } else { if strings.Compare(file.Name(), "APK.log") == 0 { ap := make(map[string]string) body, err := ioutil.ReadFile(path + "/" + file.Name()) if err != nil { fmt.Printf("[%s]讀取失敗[%s]\n", file.Name(), err.Error()) return } err = json.Unmarshal(body, ap) if err != nil { fmt.Printf("[%s]解析失敗[%s]\n", file.Name(), err.Error()) return } for a := range ap { at := strings.Split(ap[a], "|+|") for _, atemp := range at { info := strings.Split(atemp, "|-|") if len(info) > 1 { header := strings.Split(info[1], " ") for _, h := range header { if strings.Contains(h, "Referer:") { u, err := url.ParseRequestURI(h[8:]) if err != nil { fmt.Println(err.Error()) } else { apk[u.Host]++ } } } } } } } } } }
六、解析Mongo已經(jīng)存在的數(shù)據(jù)
type App struct { Id string `json:"id" bson:"_id,omitempty"` User_id string `bson:"user_id"` Name string `bson:"name"` Domain string `bson:"domain"` Business_line string `bson:"business_line"` }
重點:
1.使用bson修飾符
2.各個flag直接使用空格分割
3._id和omitempty使用,分割。同時不能存在空格
七、定時器
for { now := time.Now() next := now.Add(time.Minute * 10) next = time.Date(next.Year(), next.Month(), next.Day(), next.Hour(), next.Minute(), 0, 0, next.Location()) t := time.NewTimer(next.Sub(now)) log.Printf("下次采集時間為[%s]\n", next.Format("200601021504")) select { case -t.C: err := sync.Gather() if err != nil { log.Println(err) } } }
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
標(biāo)簽:泰安 昭通 晉中 駐馬店 阿壩 瀘州 東營 滄州
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Golang開發(fā)中常用的代碼片段匯總》,本文關(guān)鍵詞 Golang,開發(fā),中常,用的,代碼,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。