Golang开发中常用的代码片段汇总
时间:2019-03-30
本文章向大家介绍Golang开发中常用的代码片段汇总,主要包括Golang开发中常用的代码片段汇总使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
本文主要总结的是我在编写golang应用时使用到的代码片段,提供出来以备以后使用,也给需要的朋友们以参考学习,下面话不多说,来看看详细介绍:
一、通过http package发送user:passwd信息
发送类似于 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通过反射将未知对象转换为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参数
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已经存在的数据
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) } } }
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
- Java基础-day09-代码题-对象;类;封装
- MySQL replace into的使用细则(r10笔记第48天)
- Win10下用Anaconda安装TensorFlow
- 【Go 语言社区】跨域问题解决方案:jsonP客户端和服务器代码
- 图;代码轻松理解,代理
- 巧用闪回数据库来查看历史数据 (r10笔记第47天)
- 【Go 语言社区】Golang内存分配
- 小白也能懂的手写体识别
- 【Go 语言社区】浅析javascript的间隔调用和延时调用
- 说说JSON和JSONP,也许你会豁然开朗-转
- C++动态链接库
- Java基础-day11-接口;多态案例练习
- 记一次sql server 性能调优,查询从20秒至2秒
- axis2开发webservice(1)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 用Spring Boot Admin来监控我们的微服务
- java+testNG测试框架搭建(接口测试或者ui测试)
- 解决Selenium testNG执行测试时,每个测试方法都打开一个浏览器窗口的问题
- selenium元素定位中css或者xpath不选择某一类元素
- TRTC横竖屏切换
- Swift 元祖
- Flutter - 解决混合开发iOS脚本打包遇到的问题
- Shader 特效 —— Film Burn (炫光光晕)效果【GLSL】
- java selenium chromedriver浏览器驱动放在哪里?【两种位置】
- 56. Vue原生js的组件拆分结构设计
- 一步一步教你把 Redux Saga 添加到 React&Redux 程序中
- Octave的基本语句及函数的使用入门—ML Note 31
- JAVA的Lock锁接口实现
- 抽象语法树为什么抽象
- burpsuite IP伪造插件