本篇主要记录一些小tip,而不是完整知识点的记录
tip1:应用程序的入口的包必须是main,必须有main方法

tip2:main函数不支持返回值和传参,需要通过os.exit 和 os.arg(虽然没啥用)

func main()  {
   if os.Args[1] == "1" {
      os.Exit(0)
   } else {
      os.Exit(-1)
   }
}

tip3:连续常量的定义
iota 从0开始自增,一个const里 iota不会重置

const (
   one = 1 + iota
 two
 three four = 4
 five = 5 + iota
 six
)

tip4:字符串是值类型,默认是空串,不是nil
tip5:数组的比较,维度不同或者数据类型不同都编译不过,维度相同必须内容完全一致

arr1 := [5]int{}
arr2 := [6]int{}
println(arr1 == arr2) // 编译失败

tip6:切片的append是从len后append的,改变了长度,cap当不够了后,翻倍增长
tip7:切片可以共享存储结构,不需要浪费新的空间
tip8:切片不能比较,数组可以比较(tip5)
tip9:map中不存在的key是返回value的默认值,不会报错,所以可以用if v, ok := m[2]; ok
tip10:使用map[type]bool实现set
tip11:函数与主流语言的差异

可以有多个返回值
只有值传递
可以作为变量
可以作为参数和返回值

tip 11:String 是一个byte的切片,len求他的byte数
tip12:不可变的byte切片,不能赋值
tip13:字符串小知识

s := "我是csz"
t.Log(len(s)) // 3 + 3 + 3 = 9
t.Log(len([]rune(s))) 5
for _,e := range s {
   t.Log(string(e)) //字符
}

tip14:常用的字符串库 strings,strconv
tip15:panic后面的代码不会执行了,但是defer注册的延时加载可以执行


彩笔梳子
10 声望2 粉丝