随笔分类 -  GO

摘要:扩展已有类型 go没有继承,如果对别人的类型或系统类型扩展方法,两种方法 使用组合 定义别名 使用组合 package main import ( "fmt" "gin/tree" ) type MyTreeNode struct { node *tree.Node } func (myNode * 阅读全文
posted @ 2020-11-22 14:25 lizcao 阅读(139) 评论(0) 推荐(0) 编辑
摘要:封装 针对包来说 名字一般采用camelCase方法 首字母大写 public 首字母小写 private 针对方法和属性、常量都是这样的规则 一个目录下只能有有一个包 封装案例 node.go package tree import "fmt" type Node struct { Value i 阅读全文
posted @ 2020-11-22 13:16 lizcao 阅读(90) 评论(0) 推荐(0) 编辑
摘要:go面向对象 package main import "fmt" type treeNode struct { value int left,right *treeNode } func createNode(value int) *treeNode{ return &treeNode{value: 阅读全文
posted @ 2020-11-22 12:51 lizcao 阅读(177) 评论(0) 推荐(0) 编辑
摘要:golang中实现并发非常简单,只需在需要并发的函数前面添加关键字"go",但是如何处理go并发机制中不同goroutine之间的同步与通信,golang 中提供了sync包和channel机制来解决这一问题. sync 包提供了互斥锁这类的基本的同步原语.除 Once 和 WaitGroup 之外 阅读全文
posted @ 2019-12-09 10:45 lizcao 阅读(575) 评论(0) 推荐(0) 编辑
摘要:1、channel通道是阻塞的,一个协程给通道发送数据,则必须有另一个协程接收数据,否则报错 可以建立很过个通道,指定哪个协程通过哪个通道读取数据 2、可以返回一个channel,看下面这个修改 下面这个例子的执行结果 结果如下 发现hello会输出很多次 阅读全文
posted @ 2019-12-08 23:12 lizcao 阅读(373) 评论(0) 推荐(0) 编辑
摘要:1、下面协程执行后看不到执行的结果 func main(){ for i :=0;i<10;i++{ go func(i int){ // 协程 Coroutine 轻量级线程 for{ fmt.Println(i) } }(i) } } main也可以看做是一个协程,main里面又开了很多的协程, 阅读全文
posted @ 2019-12-08 22:38 lizcao 阅读(422) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示