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,可以同时做一系列的事。再每一个时间点,如果存在多个任务,那么这些任务是同时在做着的。比如一个人下班后回到家,听着音乐的同时在看书

6、panic: assignment to entry in nil map错误
data 是一个map[string]interface{}
原因: 初始化时使用: data := map[string]interface{} //未分配内存,直接赋值导致
使用: data := make(map[string]interface{}) //使用make定义,自动分配内存,不会出错

7、日期初始化,一定得使用“2006-01-02 03:04:05” 或者 “2006-01-02 15:04:05” 一个数字都不能替换,不然会导致得到的数据不对。
类似php “Y-m-d H:i:s”;这里的Y对应2006。03时对应的是12小时制,15对应的显示24小时制的。
美国人喜欢写日期按照 月 日 时 分 秒 年 时区,对应就是1月2号下午3点4分5秒06年7时区

8、defer的使用。会有一个defer栈,遵循栈的先进后出的规则。

fmt.Println(1)
defer fmt.Println(2)
defer fmt.Println(3)
fmt.Println(4)

//输出
//1
//4
//3
//2

9、数据类型转换

   // 1)、int转string
    num := 10
    str,_ :=strconv.Itoa(num)

   // 2)、string转int
    str :="123"
    num,_ := strconv.Atoi(str)

   // 3)、string转int64
    num64,_ := strconv.ParseInt(str)

   // 4)、int转uint
    int_num := unit(int_num)

  // 5)、int64转int
    //a. 使用int64()
    int64_num :=int64(int_num)

    //b.先转string,再转int
    int64_time :=time.Now().Unix()
    str_time :=strconv.FormatInt(int64_time,10)
    int_time :=strconv.Atoi(str_time)

   // 6)、string转time.Time
    str_time := "1577761285" 
    int64_time ,_ := strconv.ParseInt(str_time )  //先转int64  
    tm := time.Unix(int64_time,10,64)  //转time.Time
    // tm.Format("2006-01-02 15:04")  //格式化时间
    
  
    
原文地址:https://www.cnblogs.com/xinxinmifan/p/go-learning-notes.html