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
}