一、go浮点数转字符串保留小数点后N位,并且去掉小数点后0
// 主要逻辑就是先乘,trunc之后再除回去,就达到了保留N位小数的效果
func FormatFloat(num float64, decimal int) string {
// 默认乘1
d := float64(1)
if decimal > 0 {
// 10的N次方
d = math.Pow10(decimal)
}
// math.trunc作用就是返回浮点数的整数部分
// 再除回去,小数点后无效的0也就不存在了
return strconv.FormatFloat(math.Trunc(num*d)/d, 'f', -1, 64)
}
二、go web接收参数的验证
必填字段验证:
len(r.Form["neme"][0])==0
len(r.FormValue("name"))==0
密码的正则验证
m,_=regexp.MatchString(`^([A-Z]|[a-z]|[0-9]|[-=[;,./~!@#$%^*()_+}{:?]){6,20}$`,r.Form.Get("password"))
数字验证:
getint,err:=strconv.Itoa(r.FormValue("name"))
if err!=nil{
//可能不是数字
}
中文验证:
m,_:=regexp.MatchString("^[\\x{4e00}-\\x{9fa5}]+$",r.Form.Get("name"))
if !=m{
//可能不是数字
return false
}
英文验证
m,_:=regexp.MatchString("^[a-zA-z]+$",r.Form.Get("name"))
if !=m{
//可能不是英文
return false
}
电子邮箱验证:
m,_:=regexp.MatchString(`^([\w\.\_]{2,10})@(\w{1,}).([a-z](2,4))$`,r.Form.Get("name"))
if !=m{
//可能不是电子邮箱
return false
}
手机号码验证:
m,_:=regexp.MatchString(`^(1[3|4|5|8][0-9]\d{4,8})$`,r.Form.Get("name"))
if !=m{
//可能不是手机号码
return false
}
身份证号码
十八位:
^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$
十五位:
^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}[0-9Xx]$