casyup.me@outlook.com

0%

read/studyNoteOfGo

brief

短变量声明

go可以使用形如 := 的方式定义变量, 这样的用法仅允许在函数内使用

( 同时, 在一个 := 的使用中可以定义, 也可以赋值, 不过我不建议也不会使用这样歧义的用法)

(同样的, := 支持变量的类型不同, 不过这也是比较歧义的用法, 不推荐)

指针

go的指针并没有什么不同. 为了安全性, 它抛弃了一些灵活性

它不支持指针运算, 相当于一个引用 ( 我不开心 :( )

new

1
2
3
4
i := 0
p := &i

p := new(i)

new 在 go 中的作用很小, 它的作用就相当于少了一个名字被占用

多重赋值

go 会先对右边的表达式一次性求值

生命周期

go 采用垃圾回收, 三色标记

slice

slice 相当于 vector, 但他必须依赖于另一个容器, 比如数组

可以挑战 slice 指向数组的那些区间, 同时可以动态增长

增长的区间一旦超过原容器的容量, 会在不更改原容器的情况下 重新分配并拷贝元素

json, xml…

go 提供了这些格式的转换支持

emmmm…, 感觉 go 使用起来很方便

安全的指针, 方便的变量命名, 垃圾回收, 多重赋值, 多返回值, for衍生while …

method

go 的方法声明和定义独立与对象本身

go 的方法就像一个指定了目标的函数

封装

go 以其不能随意命名为代价(这样的代价仅仅是不能随意首字母大小写)换来了简洁的封装规范

首字母大写的, 即为 public 成员, 而首字母小写的, 即为 private 成员. 这相当容易判断