Go 使用小记

1、不能使用在运行时计算的值实例化这样的数组。
而是使用make初始化具有所需长度的切片。

db := ConnMysql()
rows, err := db.Query("select rules from u_check_list where status= ? and web_uri=? and server_ip=? order by rank ", 1, web, server)
helper.CheckErr(err)
columns, err := rows.Columns()
helper.CheckErr(err)
var rules = [len(columns)]string

Error Message: non-constant array bound len(columns)

这样写:
 columns, err := rows.Columns()
 helper.CheckErr(err)
 var ruleLength = len(columns)
 var rules = make([]string, ruleLength)

2、切片slice,一个可以动态改变大小的数组。
最大特点:长度可变;长度不同,两个切片就会不同

3、channel,初始化的时候如果设置了缓存容量,就要注意容量是否达到最大值,如果达到最大值又未被读取,此时再向channel里写数据是会失败的

4、变量名一定要注意不要跟关键字冲突;不要跟包名冲突,不然会导致包无法导入

5、并发与并行的区别:
并发: 单核cpu,可以做一系列的事,但是在某个时间点,做的只有一个任务,当任务阻塞时,cpu能立即唤醒其他任务顶上,让任务永远都在进行中。比如一个人手在玩手机,玩游戏玩烦躁了 改成看视频
并行:多核cpu,可以同时做一系列的事。再每一个时间点,如果存在多个任务,那么这些任务是同时在做着的。比如一个人下班后回到家,听着音乐的同时在看书

猜你喜欢

转载自www.cnblogs.com/xinxinmifan/p/go-learning-notes.html