Bootstrap

golang 简单知识点

1. “…”

主要用于函数有多个不定参数的情况,可以接受多个不确定数量的

var str = []string{
	"qwr",
	"234",
	"yui",
}
var str1 = []string{
	"qqq",
	"aaa",
	"zzz",
	"zzz",
}
str= append(str, str1...) //str1的元素被打散一个个append进str
fmt.Println(str)

结果:[qwr 234 yui qqq aaa zzz zzz]
2. 类型转换
Map转为string  
	mjson,_ :=json.Marshal(arr)
	mString :=string(mjson)

String转为int   
 	id, _ := strconv.Atoi(uid)

interface{}可以向函数传递任意类型的变量,但在函数内部使用时有时需要转换类型
	a,_ := res["a"].(int)

JSON.stringify() 将对象转换为 JSON 字符串,
JSON parse()  将JSON字符串转为一个对象
3. map
定义存储多种类型的数组
	res := make(map[string]interface{})

多维map
	make(map[string]map[string]string)
4. gorm求和
rows, _ := db.SQLDB.Table("purchase").Select("SUM(money) as total").Where("u_id = ? ", id).Rows()
var total int
rows.Columns()
rows.Scan(total)

当查询结果为null时,会报错sql: Scan error on column index 0, name “total”: converting NULL to string is unsupported
原因:不能把空值赋给string变量
解决办法:定义sql.NullString类型的变量。可以对空值进行判断。var total []sql.NullString
返回结果格式:
{
“String”: “9.98”, //需要存储的字段值,sql.Null**可以设置类型
“Valid”: true //是否为null
}

5. 时间戳
当前时间:time.Now().Unix()
一周之前:time.Now().AddDate(0, 0, -7).Unix()
转为utc时间:times, _ := time.ParseInLocation("2006-01-02 15:04:05", time1, time.Local)
时区:name, _ := openTimes.Zone()
if name == "UTC" {
	t1 = time.Unix(openTimes.Unix()-3600*8, 0).Format("2006-01-02 15:04:05")
	t2 = time.Unix(endTimes.Unix()-3600*8, 0).Format("2006-01-02 15:04:05")
} else {
	t1 = openTimes.UTC().Format("2006-01-02 15:04:05")
	t2 = endTimes.UTC().Format("2006-01-02 15:04:05")
}

6.解析body体传参数
data, _ := ioutil.ReadAll(ctx.Request.Body) 
fmt.Printf("ctx.Request.body: %v", string(data))
7. Cannot use ‘’,’’ (type rune) as type string

定义’,’时使用的单引号,类型为rune相当于int32,go中不建议使用单引号定义字符串,
单引号只能用于单个字符(或字符编码)

8. go运算符XOR(^)

作为二元运算符就是异或,包括符号位在内,相同为0,不相同为1
作为一元运算符表示是按位取反,包括符号位在内

9. abort() 终止进程

中间件里面有错误如果不想继续后续接口的调用不能直接return,而是应该调用c.Abort()方法。
调用 Abort() 确保这个请求的其他函数不会被调用,而return会继续执行。

10. docker 网桥

docker network init bridge-demo
docker network connect bridge-demo go-demo1
docker network connect bridge-demo mysql

;