摘要: 并发goroutinegoroutine 是 Go 并行设计的核心。goroutine 说到底其实就是线程,但是他比线程更小,十几个 goroutine 可能体现在底层就是五六个线程,Go 语言内部帮你实现了这些 goroutine之间的内存共享。执行 goroutine 只需极少的栈内存(大概是 ... 阅读全文
posted @ 2014-12-24 17:05 huangxiaohen 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 什么是interface简单的说,interface 是一组 method 的组合,我们通过 interface 来定义对象的一组行为。如何实现interface?//Human 对象实现 Sayhi 方法func (h *Human) SayHi() { fmt.Printf("Hi, I am ... 阅读全文
posted @ 2014-12-24 15:18 huangxiaohen 阅读(163) 评论(0) 推荐(0) 编辑
摘要: method带有接收者的函数,我们称为 methodfunc (r ReceiverType) funcName(parameters) (results)package mainimport ( "fmt" "math")type Rectangle struct { width, height ... 阅读全文
posted @ 2014-12-24 14:14 huangxiaohen 阅读(149) 评论(0) 推荐(0) 编辑
摘要: main函数和init函数虽然一个 package里面可以写任意多个 init 函数,但这无论是对于可读性还是以后的可维护性来说,我们都强烈建议用户在一个 package 中每个文件只写一个 init 函数。Go 程序会自动调用 init()和 main(),所以你不需要在任何地方调用这两个函数。每... 阅读全文
posted @ 2014-12-24 11:07 huangxiaohen 阅读(365) 评论(0) 推荐(0) 编辑
摘要: deferGo 语言中有种不错的设计,即延迟(defer)语句,你可以在函数中添加多个 defer 语句。当函数执行到最后时,这些 defer 语句会按照逆序执行,最后该函数返回。特别是当你在进行一些打开资源的操作时,遇到错误需要提前返回,在返回前你需要关闭相应的资源,不然很容易造成资源泄露等问题。... 阅读全文
posted @ 2014-12-24 10:56 huangxiaohen 阅读(178) 评论(0) 推荐(0) 编辑