Go 设计模式(Go patterns)

1.Generator(发生器)

在Google IO 2012大会中提到的Go pattern,记录如下,以便加深理解。 Go patterns 可以理解为Go的设计模式,这个往往是在实践中遇到的一些典型场景而总结出来的通用的方法论。 Generator可以理解为发生器

//golang partens
//Generator: function …

阅读全文

Go设计模式(Go patterns)参考文献和视频

并发是Golang中比较复杂也是困难的部分,设计上需要考虑是否死锁和goroutine是否未推出导致一直占有资源等问题 这里给出了一些优秀的文章链接供参考。

参考文献

  1. RobPike在Google IO 2012大会 上 关于并发的介绍(DOC链接和视频链接)

(1) …

阅读全文

Go基础知识学习6 接口

Golang接口定义使用interface来声明,它相对于其他语言最大的特定就是接口定义和实现的关联性仅仅依赖接口的名字和声明,无需显式声明。 1. 接口定义和实现 在下面这个例子中,定义了两个自定义类型city country 和接口类型IName city、country分别实现了接口IName, 它们不需要代码上不需要去和IName关 …

阅读全文

Go基础知识学习7并发

Golang原生支持并发。并发的最小单位是goroutine,相互之间的通信采用channel. 这里不涉及锁等复杂的内容,先简单的弄个例子了解一下Golang并发实现的简洁。

例子,实现slice的求和

具体步骤:创建两个goroutine 一个对slice的前一半数据求和,一个对slice后一半数据求和,最后综合两个结果 完整的代码见: …

阅读全文

Go基础知识学习1

输入代码

package main

import (
    "fmt"
)

func main() {
    //Println Printf
    fmt.Println("Golang, I am Michael.Pan!")
    i := 101
    fmt.Printf("i = …

阅读全文

Go基础知识学习2 回调函数

回调函数的定义 回调函数,一个通过函数指针调用的函数,本质上还是函数,由于它的应用场景而出现回调函数这个名词。它非常重要,在一些优秀的C库中经常见到,它不是由函数的实现方实现(但是由实现方定义,通常在头文件定义),而由调用方实现,这样便于问题的抽象。可以通过下面这个例子简单的体会一下。

例如: 在C语言 标准库中一般是同个函数指针实现, 比如 C库中快速排 …

阅读全文

Go基础知识学习3 闭包

闭包本质是函数+引用环境,外形是一个匿名函数。 闭包类似一个函数工厂,绑定不同的引用环境,生成不同的函数。 我们还是以回调函数中的例子来说明,不过我们换成闭包来实现“抽象” 将一个数组中偶数的值相加后的结果输出, 将一个数组中奇数的值相加后的结果输出。

package main

import (
    "fmt"
)

func …

阅读全文

Go基础知识学习4 包

包(package)是函数和数据的集合,类似android的jar或者C中的库,

我们创建一个包含冒泡排序算法的包 │ exp6.go └─algorithms bubble.go 其中 exp6.go 是测试包的程序,algorithms/bubble.go 是包程序 exp6.go 代码如下:

package main

import …

阅读全文