Go语言快速入门笔记(番外篇一)

彩笔梳子 · · 174 次点击 · · 开始浏览    

本篇主要记录一些小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注册的延时加载可以执行


有疑问加站长微信联系(非本文作者)

本文来自:Segmentfault

感谢作者:彩笔梳子

查看原文:Go语言快速入门笔记(番外篇一)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:1006366459

174 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传