当前位置: 首页 > news >正文

Go小工具合集

一、处理json字符串数据

package mainimport ("fmt""github.com/tidwall/gjson"
)const json = `{"username": "tanglei","pwd": "111111","info": {"age": "18","sex": "男","love": [{"python": "selenium1","java": "jmeter"},{"vue": "element","react": {"test1": "123","test2": {"name": "${name}"}}}]}
}
`func main() {value := gjson.Get(json, "info.love.1.react.test2.name")fmt.Println(value.String())
}

二、读取json文件

package mainimport ("fmt""io/ioutil""os"
)func readJSONFile(path string) string {// 打开json文件  path:json文件路径jsonFile, err := os.Open(path)// 最好要处理以下错误if err != nil {fmt.Println(err)}// 要记得关闭defer jsonFile.Close()byteValue, _ := ioutil.ReadAll(jsonFile)return string(byteValue)
}func main() {jsonData := readJSONFile("user.json")fmt.Println(jsonData)
}

三、将json格式数据处理成map

func jsonToMap(data string) (result map[string]interface{}){err := json.Unmarshal([]byte(data), &result)if err != nil {fmt.Println("JsonToMapDemo err: ", err)}return
}

四、随机从数组里取值

package mainimport ("fmt""math/rand""time"
)func randomAccessData(data []string) string {/*rand.Seed:还函数是用来创建随机数的种子,如果不执行该步骤创建的随机数是一样的,因为默认Go会使用一个固定常量值来作为随机种子。time.Now().UnixNano():当前操作系统时间的毫秒值*/rand.Seed(time.Now().UnixNano())/*生成一个随机数*/a := rand.Intn(len(data))return data[a]
}func main() {res2 := []string{"1", "2", "3", "4", "5", "6"}res3 := randomAccessData(res2)fmt.Println(res3)
}

五、正则匹配

package mainimport ("fmt""regexp"
)func matchRegular(data string, rule string) (res []string) {// data: 需要匹配的字符串    rule: 匹配的规则  res: 返回数组//1)解释规则,他会解析正则表达式,如果成功返回解释器reg1 := regexp.MustCompile(rule)if reg1 == nil { //解释失败,返回nilfmt.Println("err = ")return}//2)根据规则提取关键信息,-1表示匹配所有项,正数为匹配项数result := reg1.FindAllStringSubmatch(data, -1)for _, value := range result {res = append(res, value[1])}return res
}func main() {jsonData := `{"username": "root","pwd": "123456","info": {"age": "18","sex": "男","love": [{"python": "selenium1","java": "jmeter"}]}}`res0 := matchRegular(jsonData, `"pwd": "(.+?)"`)fmt.Println(res0)
}

六、生成随机IP地址

package mainimport ("fmt""math/rand""time"
)func randIP() string {/*rand.Seed:还函数是用来创建随机数的种子,如果不执行该步骤创建的随机数是一样的,因为默认Go会使用一个固定常量值来作为随机种子。time.Now().UnixNano():当前操作系统时间的毫秒值*/rand.Seed(time.Now().UnixNano())/*生成一个随机数*/a := rand.Intn(256)b := rand.Intn(256)c := rand.Intn(256)d := rand.Intn(256) //实际随机生成的数字范围[0,255]ip := fmt.Sprintf("%d.%d.%d.%d", a, b, c, d)return ip
}func main() {ip := randIP()fmt.Println(ip)
}

七、go http客户端(使用三方库构造)

package mainimport ("fmt""github.com/kirinlabs/HttpRequest""strings"
)func handleRes(resp *HttpRequest.Response,err error) (result string,error error) {defer resp.Close()if err != nil {error = errreturn "", err}body, _ := resp.Body()result = string(body)return
}// 处理请求方式为get,并且参数是body的情况
func requestsGetBody(url string, headers map[string]string, data map[string]interface{}) (result string, error error) {//JSON序列化configData, _ := json.Marshal(&data)param := bytes.NewReader(configData)fmt.Println("data:", data)//构建http请求client := &http.Client{}req, err1 := http.NewRequest("GET", url, param)if err1 != nil {error = err1return "", err1}//headerfor key, value := range headers {req.Header.Add(key, value)}//发送请求res, err2 := client.Do(req)if err2 != nil {error = err2return "", err2}defer res.Body.Close()//返回结果body, err3 := ioutil.ReadAll(res.Body)if err3 != nil {error = err3return "", err3}result = string(body)return
}// 发送请求
func sendRequests(method string, url string, headers map[string]string, cookies map[string]string, data map[string]interface{}) (result string, error error) {req := HttpRequest.NewRequest().Debug(false).SetTimeout(5)req.SetHeaders(headers)req.SetCookies(cookies)if strings.Contains(strings.ToUpper(method), "GET") {headerValue, _ := json.Marshal(headers)headerString := string(headerValue)if strings.Contains(headerString, "json") {result, error = requestsGetBody(url, headers, data)} else {resp, err := req.Get(url, data)result, error = handleRes(resp, err)}} else if strings.Contains(strings.ToUpper(method), "POST") {resp, err := req.Post(url, data)result, error = handleRes(resp, err)}return
}func main() {head := map[string]string{"Authorization": "JWT eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoiN2MzZGY4NjUtMGJjYS00MDRjLThmMzAtODVlNjNiOThlNmNlIiwidXNlcm5hbWUiOiJhZG1pbiIsImV4cCI6MTYzNzU5MzQ5NywiZW1haWwiOiJhZG1pbkBxcS5jb20ifQ.1BOeh4HABB2J-Vfr_uG9tAeobURIjFVXlGpQjtLqeZI"}cookie := map[string]string{}data := map[string]interface{}{}resp , err := sendRequests("get", "http://127.0.0.1:10000/interface", head, cookie, data)fmt.Println("resp:",resp)fmt.Println("err:",err)
}
http://www.dtcms.com/a/499461.html

相关文章:

  • Go 1.26 内置函数 new 新特性
  • 十堰微网站建设多少钱wordpress开头
  • Debian 的 网络管理器 被意外卸载,修复过程
  • 网站备案流程浏览器打不开网页是什么原因
  • Rust中字符串与格式化
  • Linux网络--6、网络层
  • 福州网站建设哪家专业怎么在自己的网站上推广业务
  • 数据结构——队列的顺序存储结构
  • Android Bootloader启动逻辑深度解析
  • 【机械臂运动学基础】变换矩阵
  • 购物网站开发意义大气广告设计网站源码 企业公司模板 dedecms5.7 企业网站
  • 包资源管理器NPM 使用
  • 在PHP框架里如何进行数据库连接?
  • 网站建设后压缩代码邢台又一地被划定高风险区域
  • 《彻底理解C语言指针全攻略(6)-- qsort、sizeof和strlen》
  • 网站开发的工资是多少wordpress 获取文章图片标题
  • C++ - List
  • 阿里服务器怎么做网站服务器上海网站制作公司介绍
  • MAC mini /绿联NAS 上安装本地AFFiNE
  • h5游戏免费下载:怪物联盟
  • 酒店网站建设方案网站验证码出不来
  • 【JAVA】Java8的 Stream相关学习分析总结
  • 虚幻引擎5 GAS开发俯视角RPG游戏 P06-06 次要属性
  • 基于Vue的保护动物信息管理系统r7zl6b88 (程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 深圳AI搜索优化怎么样
  • 工商网站查询企业信息官网购物平台最新排名
  • 【JUC】核心知识点归纳
  • 网站上海备案大渡口发布
  • 虚幻引擎入门教程:虚幻编辑器的基本操作
  • 建行网站首页登录网上银行百度服务中心官网