在 Golang 中用名字调用函数

上个星期,我写了篇《Function call by name in Golang》。由于是英文的,所以被人诟病(说谁,谁知道!)。好吧,现在用中文重新写一遍。 Golang 中的函数跟 C 的一样,是个代码块,不过它可以像其他类型那样赋值给一个变量。 如果你对函数不熟悉,《Codewalk: First-Class Functions in Go》应该是个不错的起点。已经有所了解?那么继续吧! 首先,来看看这段 PHP 代码: function foobar() { echo "Hello G...阅读全文

阅读:6962 评论:8

Go语言并发与并行学习笔记(一)

如果不是我对真正并行的线程的追求,就不会认识到Go有多么的迷人。 Go语言从语言层面上就支持了并发,这与其他语言大不一样,不像以前我们要用Thread库 来新建线程,还要用线程安全的队列库来共享数据。 以下是我入门的学习笔记。 首先,并行!=并发, 两者是不同的,可以参考:http://concur.rspace.googlecode.com/hg/talk/concur.html Go语言的goroutines、信道和死锁 goroutine Go语言中有个概念叫做goroutine, 这类似...阅读全文

阅读:3569 评论:3

Go语言并发与并行学习笔记(二)

Go语言的并发和并行 不知道你有没有注意到一个现象,还是这段代码,如果我跑在两个goroutines里面的话: var quit chan int = make(chan int) func loop() { for i := 0; i < 10; i++ { fmt.Printf("%d ", i) } quit <- 0 } func main() { // 开两个goroutine跑函数loop, loop函数负责打印10个数 go loop() go loop() for i := 0;...阅读全文

阅读:2449 评论:0

Go语言并发与并行学习笔记(三)

Go语言并发的设计模式和应用场景 以下设计模式和应用场景来自Google IO上的关于Goroutine的PPT:https://talks.golang.org/2012/concurrency.slide 本文的示例代码在: https://github.com/hit9/Go-patterns-with-channel 生成器 在Python中我们可以使用yield关键字来让一个函数成为生成器,在Go中我们可以使用信道来制造生成器(一种lazy load类似的东西)。 当然我们的信道并不是...阅读全文

阅读:2397 评论:2

go包翻译整合版,发布在coding.net

其实我做好一段时间了,但是一直有些犹豫。因为之前发的,实在没啥反应。大家知道辛辛苦苦那么久,结果连点声都没有实在很让人失望的。 不过最终我还是决定发出来。放在coding.net了,也部署了演示。 演示地址 项目地址 我不擅长排版,是完全用的godoc的排版,感谢godoc,话说我这和godoc都是开源应该不侵权吧,如果不行那么请通知我。 有一些包因为专业知识不足无法准确翻译,只能搁下,只得期待别人了。阅读全文

阅读:3611 评论:3

数组、切片(以及字符串): append内置函数的运作机制

介绍 数组是编程语言中最常用到的功能之一. 数组看起来是比较简单,但在一个语言要实现一个数组的时候,有些问题必须要解决,如:: 固定大小或可变大小? 是类型的一部分? 多为数组的模型? 空数组的意义? 这些问题的解决影响着数组仅是语言的一个功能还是其设计的核心部分. 你要爪子翻译于 1年前 0人顶 顶 翻译的不错哦! 在早期的Go语言发展中,在设计数组前大约用了1年的时间来决定这些问题. 关键的一步就是引入片, 可以在一个固定大小的数组上有一个灵活可扩展的数据结构. 是该类型的大小的一部分,新的...阅读全文

2013-11-04 11:07:54 几点人, NCThinker, 等
阅读:13516 评论:4