golang中常用函数

golang一行代码将切片转成以分号分隔的字符串
https://blog.csdn.net/Sun_Hui_/article/details/106083770

Golang Slice 删除指定的索引(下标)和 slice 清空 等常用操
https://www.cnblogs.com/egrep/p/10532806.html
http://www.baiyuxiong.com/?p=1175


Golang map字典按值排序
https://blog.csdn.net/qq_15115793/article/details/88552152
https://blog.csdn.net/u010983881/article/details/52460998

golang 切片 slice 去掉重复元素
https://blog.csdn.net/whatday/article/details/109710407


//字符串转json对象
func str2json(jsonstr string) interface{}{
	//cmd := "['read': 2.0, 'write': 1.2}, {'read_mb': 4.0, 'write': 3.2}]"
	str := strings.Replace(string(jsonstr), "'", "\"", -1)
	str = strings.Replace(str, "\n", "", -1)

	var dat interface{}
	if err := json.Unmarshal([]byte(str), &dat); err == nil {
		return dat
	} else {
		return "0"
	}
}

//遍历数组中所有元素追加成string
func arrayToString(arr []string) string {
	var result string
	for _, i := range arr {
		result += i
	}
	return result
}

//判断文件是否存在,存在则返回true,不存在则返回false
func checkFileIsExist(filename string) bool  {
	var exist = true
	if _, err := os.Stat(filename); os.IsNotExist(err) {
		exist = false
	}
	return exist
}

//将int64转换为int
func int64toint(num int64) int{
	strInt64 := strconv.FormatInt(num, 10)
	id16, _ := strconv.Atoi(strInt64)
	return id16
}
//输出错误
func checkErr(err error) {
	if err != nil {
		panic(err)
	}
}

//字节数组转string
func byte2String(p []byte) string {
	return *(*string)(unsafe.Pointer(&p))
}

//string转字节数组
func string2byte(s string) []byte {
	x := (*[2]uintptr)(unsafe.Pointer(&s))
	h := [3]uintptr{x[0], x[1], x[1]}
	return *(*[]byte)(unsafe.Pointer(&h))
}

func post_test() {
	request_url := "http://xxxxxxxxxxxx/ybtest"
	// 要 POST的 参数
	form := url.Values{
		"username": {"xiaoming"},
		"address":  {"beijing"},
		"subject":  {"Hello"},
		"from":     {"china"},
	}
	//对form进行编码
	body := bytes.NewBufferString(form.Encode())
	rsp, err := http.Post(request_url, "application/x-www-form-urlencoded", body)
	if err != nil {
		panic(err)
	}
	defer rsp.Body.Close()
	body_byte, err := ioutil.ReadAll(rsp.Body)
	if err != nil {
		panic(err)
	}
	fmt.Println(string(body_byte))
}


func post_data(url string, json string, filename string, filepath string) {
	var buff bytes.Buffer
	// 创建一个Writer
	writer := multipart.NewWriter(&buff)

	// 写入一般的表单字段
	writer.WriteField("json", json)

	// 写入文件字段
	if checkFileIsExist(filepath) {
		// CreateFormFile 第一个参数是表单对应的字段名;第二个字段是对应上传文件的名称
		w, err := writer.CreateFormFile("file", filename)
		if err != nil {
			//创建文件失败
			checkErr(err)
			return
		}
		data, err := ioutil.ReadFile(filepath)
		if err != nil {
			//读取文件发生错误
			checkErr(err)
			return
		}
		// 把文件内容写入cd
		w.Write(data)
	}

	writer.Close()

	// 发送一个POST请求
	req, err := http.NewRequest("POST", url, &buff)
	if err != nil {
		//创建请求失败
		checkErr(err)
	}

	// 设置你需要的Header  (这里要特别注意,改成下面json格式就是不行的)
	req.Header.Set("Content-Type", writer.FormDataContentType())
	//req.Header.Set("Content-Type", "application/json;charset=UTF-8")
	//req.Header.Set("Content-Type", "text/html;charset=utf-8")
	//req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36 Edg/85.0.564.44")

	var client http.Client
	// 执行请求
	resp, err := client.Do(req)
	defer resp.Body.Close()
	// 读取返回内容
	d, err := ioutil.ReadAll(resp.Body)
	if err != nil{
		//读取失败
		checkErr(err)
		return
	}

	fmt.Println(string(d))

}


//获取当前最大已经消费完的最大ID
func getCurrId(logpath string) string {
	var f *os.File
	var err1 error
	max_id := "0"
	if checkFileIsExist(logpath) { //如果文件存在
		f, err1 = os.Open(logpath) //打开文件
		reader := bufio.NewReader(f) // 创建带缓冲的读取器
		for {
			str, err := reader.ReadString('\n')
			if err == nil && str !="" {
				max_id = strings.Replace(str, "\n", "", -1)
				max_id = strings.Replace(max_id, "\\n", "", -1)
				break
			}
		}
		f.Close()
	} else {
		f, err1 = os.Create(logpath) //创建文件
		n, err := io.WriteString(f, "0\n") //写入文件(字符串)
		_ = n
		checkErr(err)
		f.Close()
	}
	checkErr(err1)
	return max_id
}

//将消费完的最大ID写入文件
func writeFile(logpath string, num int) bool {
	var f *os.File
	f, err := os.OpenFile(logpath,os.O_WRONLY|os.O_TRUNC,0666) //打开文件
	if err != nil {
		checkErr(err)
		return false
	}
	n, err := io.WriteString(f, strconv.Itoa(num)+"\n") //写入文件(字符串)
	if err != nil {
		checkErr(err)
		return false
	}
	_ = n
	f.Close()
	return true
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扬子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值