写点什么

Go Functions

用户头像
escray
关注
发布于: 2021 年 04 月 17 日
Go Functions

极客时间《Go 语言从入门到实践》学习笔记 04

13 | Go 语言的函数


其实每次从留言里面都能看到很不错内容,对于视频课程是一个很好的补充。


就目前来看,这个课程比较适合我这种有一些编程经验,但是对于 Go 语言又完全陌生的人。完全的小白,可能觉得跨度比较大,例如函数式编程;对 Go 语言有所了解的,可能觉得前面的内容比较无趣。


其实有一点好奇,Go 语言对于完全小白的新手来说,究竟算不算友好?


对于那个随机函数,我加上


rand.Seed(time.Now().UnixNano())


之后,输出的仍然是同样的,或者说在一段时间内输出值是一样的,除非稍微修改一下代码,可能是因为缓存的缘故?


找到一本《计算机程序的构造和解释》,其实这本来应该是本科时候应该看的,不知道有没有机会拜读一下。

14 | 可变参数和 defer


可变参数似乎已经是新的编程语言标配了,PHP、Python、Ruby 里面似乎都有


看到一个 defer 小魔术


// [outside][here][inside]func TestDeferGetFunc(t *testing.T) {  defer GetFunc()()  fmt.Print("[here]")}
// [there][outside]func TestDeferGetFuncAgain(t *testing.T) { defer GetFunc() fmt.Print("[there]")}
复制代码


老师的解释是 defer 延迟执行只是最后一层调用的延迟。


另外留言里面 @Flygar 和 @Eden 的两段代码也值得一看。

15 | 行为的定义和实现


这一节感觉还是有点难度的,老师讲的内容相对比较容易理解,但是看留言里面的一些代码把我又绕进去了。


值接受者声明的方法,调用时使用这个值的副本,指针接受者声明的方法,调用时共享这个值。


这里的值接受者和指针接受者,其实就是在说,函数的参数类型是值或者指针的意思吧。


看了一遍 @Eden 的代码,确实比老师讲的还要清晰,@蓝士钦 最后整理的那段代码也很能说明问题。


感觉老师比较辛苦,回复留言的话,要看好多代码。

发布于: 2021 年 04 月 17 日阅读数: 10
用户头像

escray

关注

Let's Go 2017.11.19 加入

Let's Go,用 100 天的时间从入门到入职

评论

发布
暂无评论
Go Functions