继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

go语言 学习笔记1

holdtom
关注TA
已关注
手记 1842
粉丝 240
获赞 991


写服务器,天天与各种数据结构打交道。学习go语言已经10天了,还是未能很好应用。写起代码磕磕绊绊。希望写个博客,增加记忆理解。

对于何时用channel,何时用sync.Mutex很纠结。何时用go gorountine也很纠结

第一种: 生产者+消费者

生产者:在一个gorountine,不停的生产  发送到channel

消费者:在一个gorountine,不停的处理来自生产者channel的数据,并通过另一个channel发出来

主线程里,一个for循环,生产者+消费者一起

例子如下:

func generate(ch chan int) {

  for i := 2; ; i++ {

    ch <- i

  }

}

func filter(in, out chan int, prime int) {

  for {

    I := <-in

    if i%prime != 0 {

      out <- i

    }

  }

}

func main() {

  runtime.GOMAXPROCS(1)

  ch := make(chan int)

  go generate(ch)

  for {

    prime := <-ch

    ch1 := make(chan int)

    go filter(ch, ch1, prime)

    ch = ch1//这句话有疑问,,不明白要干嘛

  }

}

同时监听多个channel

func xx() {

  for {

    select {

    case req := <-service:

    case <-quit:

      return

    }

  }

}

可以主线程来一个select,处理其他gorountine来的消息?

@ import package的init-----包间顺序不定

@包里goroutine在所有init之后才执行

@对变量的读写都是原子的----这么牛逼???那还用我加锁??怀疑!!

@没有指针运算,用slice代替

@slice=&array   等同于  slice=array[0:len(array)]

@常量不用定义类型  const MAX = 100

@枚举  const ( _=itoa; A = itoa*2; B; C)

太奇葩,这个itoa,不如直接写死吧。  上面的结果是:0,2,4,6

@Container/heap list ring vector hash这里这么多结构,没个具体说明,写c++的stl经常用到,要专门开贴,深入了解下

来自《Go语言,互联网时代的C》

附件:http://down.51cto.com/data/2364437

©著作权归作者所有:来自51CTO博客作者zz_yun的原创作品,如需转载,请注明出处,否则将追究法律责任


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP