Golang·常用属性
注意事项
金额采用 float32 不能使用 float64,否则精度丢失
常用结构体
var ret struct { List interface{} `json:"list"` //数组 Info interface{} `json:"info"` //对象 Code int `json:"code"` //状态码 0正常 Msg interface{} `json:"msg"` //错误问题 } //定义json类型值 Axxx json.RawMessage `json:"axxx"
命令行
运行项目 go run xxx.go 项目下 运行 go mod init xxx 会自动生成go.mod文件 更新mod文件 go mod tidy src:源代码文件 public公共 pkg:包文件 bin:相关bin文件 //生成可执行文件 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build xxx.go //(多文件则 xxx.go 改为 . 一个点符号) CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o main-go-linux xxx.go //(多文件则 xxx.go 改为 . 一个点符号) // 载入网络脚本 go get http://xxxxx // Mac VScode 一键折叠代码 command + k + 0,打开终端 command + j,
属性
0】取当前时间 date := time.Now().Format(“2006/01/02 15:04:05”)
0】判断文本存在某内容 strings.Contains(“text”, “xt”)
0】判断数组存在某内容 index := sort.SearchStrings(arr, target)
1】字符串 转整型 x,_:= strconv.Atoi(string)
2】int转符串 x = strconv.Itoa(int)
3】替换字符 x = strings.Replace(str, “]”, “”, -1)
4】分割字符 arr = strings.Split(str, “,”)
5】int64转文本 strconv.FormatInt(Unixs, 10) // 2~32 进制数
5】int64转文本 strconv.FormatFloat(3.1415926, ‘f’, 5, 64) // 3.14159
5】文本转int64数值型 x, _ := strconv.ParseInt(“string”, 10, 64)
5】float64转文本 str := strconv.FormatFloat(s, ‘f’, -1, 64)
5】float64转 int64 x := int64(float64)
5】文本转float64型 x, _ := strconv.ParseFloat(str, 64)
5】string转int32型 n, e := strconv.Atoi(strings(x))
5】int32 转 string型 str = string(int32(x))
6】文本转数组 Arr= strings.Split(srt, “|”)
6】数组转文本 str := strings.Join(arr, “”)
7】文本取最后2位数 str[len(str)-2:]
7】时间类型转换
8】异步方法 在方法涵 前面加上 go 字样
//取当前时间戳 date := time.Now().UnixMilli()
//日期转时间戳 date := time.Date(year, month, day, hour, points, seconds, 00, time.Local).UnixMilli()
//获取当前日期 date := time.Now().Format(“2006-01-02 15:04:05”)
//时间戳转日期 date := time.Unix(1389058332, 0).Format(“2006-01-02 15:04:05”)
8】浮点型转字符串
f64 := 1223.13252
sF64 := strconv.FormatFloat(f64, ‘f’, 5, 64) //方法1,可以指定输出格式、精度、长度
9】字符串转布尔型
b, _ := strconv.ParseBool(“1”)
10】布尔型转字符串
sBool := strconv.FormatBool(true) //方法1
11】结构体转换为json
data, err := json.Marshal(req) // 返回[]byte,err
fmt.Println(string(data))
12】json转换为结构体
err = json.Unmarshal([]byte(jsonStr), &resp)
13】截取文本(字节切片截取的方式)
s := “abcdefghijk” fmt.Println(s[2:4]) //cd
14】Get post 请求json后存入结构体
respBody, _ := ioutil.ReadAll(resp.Body) //请求json后 //fmt.Println("Response body: ", string(respBody)) var ipRet IpData errs := json.Unmarshal([]byte(respBody), &ipRet) //json转对象 if err != nil { fmt.Println("查询 异常:", errs) } fmt.Println(ipRet)
15】golang函数返回不明确类型
func test(arg int) interface{}{ if arg > 0{ return "大于0" } else { return arg } //调用之后可以用xx.(Type)之类的去判断一下返回值的类型 if value, ok := xxx.(int); ok { xxx = value } }
16】接口返回
//返回时结构体 func Funxxx(xxx string) interface{} { return xxx } msg, _ := json.Marshal(typexxx) //转换成json 返回值 必须先定义异常 _:= writer.Write(msg) //返回值 //返回文本 writer.Write([]byte("0")) //返回值
17】引用另一个文件
package // 名称必须与文件夹名称一致 import "项目文件名/文件名2/package名称" //引用多层文件夹 package名称.xxx //使用
18】打包
//生成可执行文件 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o main-go-linux xxx.go
19】结构体设置
type returnObj struct { data string `json: datas` //设置json别名 key string `default:"ok"` //设置默认值 } var Obj returnObj //使用结构体
20】文本数组转整形数组
func StrToInt(strArr []string) []int { // 文本数组转整形数组 res := make([]int, len(strArr)) for index, val := range strArr { res[index], _ = strconv.Atoi(val) } return res }
21】去除换行符
// 去除换行符 str = strings.Replace(str, "\n", "", -1)
22】读取sql值处理空值 则使用指针模式 var name *string 取值 *name
23】SQL读取/存储 json结构体
//存储 strJson, _ := json.Marshal(jsonText) //定义; 结构体内容 转json文本 string(strJson) //使用 //读取 var strbyte []byte //定义; 接收json 字段内容 json.Unmarshal([]byte(strbyte), &obj) //取值; 转序列号
24】字符串json转存结构体 (转map)
var jsonMap map[string]interface{} //转map json.Unmarshal([]byte(str), &jsonMap) //map转json bodyJsons, _ := json.Marshal(jsonMap) //json转字节类型 json.Unmarshal([]byte(bodyJsons), &Objs) //存结构体
25】Golang 把json中的unicode编码转换成中文字符
//Golang 把json中的unicode编码转换成中文字符 func UnescapeUnicode(raw []byte) ([]byte, error) { str, err := strconv.Unquote(strings.Replace(strconv.Quote(string(raw)), `\\u`, `\u`, -1)) if err != nil { return nil, err } return []byte(str), nil }
26】延时
time.Sleep(2 * time.Second) // 延时2秒