golang中的select语句格式如下 select { case <-ch1: // 如果从 ch1 信道成功接收数据,则执行该分支代码 case ch2 <- 1: // 如果成功向 ch2 信道成功发送数据,则执行该分支代码 default: // 如果上面都没有成功,则进入 default 分支处理流程 } 可以看到select的语法结构有点类似于switch,但又有些不同。 select里的case后面并不带判断条件,而是一个信道的操作,不同于switch里的case,对于从其…
golang中的select语句格式如下 select { case <-ch1: // 如果从 ch1 信道成功接收数据,则执行该分支代码 case ch2 <- 1: // 如果成功向 ch2 信道成功发送数据,则执行该分支代码 default: // 如果上面都没有成功,则进入 default 分支处理流程 } 可以看到select的语法结构有点类似于switch,但又有些不同。 select里的case后面并不带判断条件,而是一个信道的操作,不同于switch里的case,对于从其…
阅读 NSQ 源码时,看到NSQ使用了 go-svc 来启动nsq的相关程序,使得在程序退出的时候可以做一些释放资源等收尾工作。 使用起来非常简单,定义一个Service,实现其 svc.Service中的接口即可。 简单使用: func main() { prg := &program{} //运行程序 if err := svc.Run(prg, syscall.SIGINT, syscall.SIGTERM); err != nil { log.Fatal(err) } } //初始化方法 func…
简介 json格式可以算我们日常最常用的序列化格式之一了,Go语言作为一个由Google开发,号称互联网的C语言的语言,自然也对JSON格式支持很好。但是Go语言是个强类型语言,对格式要求极其严格而JSON格式虽然也有类型,但是并不稳定,Go语言在解析来源为非强类型语言时比如PHP等序列化的JSON时,经常遇到一些问题诸如字段类型变化导致无法正常解析的情况,导致服务不稳定。下面我们就一起来看看。 下面看看一个正常的结构体转json是什么样子: package main import ( "encoding/…
简介: es包地址:https://github.com/olivere/elastic/ 这个版本被广泛使用,我们也用这个。 注意:es版本不同,要导入不同的包。6.0版本导入“github.com/olivere/elastic” 连接es: var host = "http://xxx.com:9201" func es_init() { client, err := elastic.NewClient( elastic.SetURL(host), elastic.SetSniff(false), el…
import "github.com/Shopify/sarama" saram 使用纯go语言编写。用于处理Apache Kafka(0.8及更高版本)的纯Go客户端库. 它包括一个易于生成和使用消息的高级API,以及一个在高级API不足时控制线路上字节的低级API. 内嵌提供了高级API的用法示例及其完整文档. 生产者: 有几种类型的生产者: sarama.NewSyncProducer() //同步发送者 sarama.NewAsyncProducer() //异步发送者 同步模式: func m…
本篇文章为go的启蒙文章,非常适合新手阅读,本文文笔生动形象,配图有趣可爱,实为下饭上厕所无聊打发时间的良心文字,欢迎大家阅读+评论。本文大部分文档来源于go官网教程:https://tour.golang.org/list 。也有一些第三方资料。 所有的go程序都是由包组成的,意思就是说你不能像拍簧片(php) 一样, 这里拉一坨,那里拉一坨,你必须像java一样,所有的代码都对应着一个包,在包里面编写代码。懂了吗? 还不懂?给我爬。。。。。。 但是呢,就像你出生在普通家庭,隔壁王二蛋却是个富二代一样。虽…
注意:mac 自带的终端 是不支持的,所以只能用iterm2 来实现。 iTerm2是一款相对比较好用的终端工具.iTerm2常用操作包括主题选择、声明高亮、自动填充建议、隐藏用户名和主机名、分屏效果等. 下载地址:http://www.iterm2.cn/download sz rz 命令其实是lrzsz包里面的命令 我们mac可以通过brew来下载。 2. 安装brew 国外:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubuserconten…
将Go的main包拆分为多个文件的写法和普通包是完全一致的,其使用规则也相同。如编写main包结构如下: main |----main.go |----show.go 在main.go中编写了main函数,main函数调用了在show中定义的函数或变量。到此和一般的go包都一致。但是当运行go run mian.go时会报错,提示main.go中从show.go中引用的变量和函数没有定义。这时需要将main包相关的所有文件都显式的列出,如下: go run main.go show.go …
简介: Golang Present 是 Golang 社群开发出來的一个简单工具,通过简单的语法可以制作 ppt(语法近似于 Markdown)。 默认文件格式是 .slide ,是随着 golang 诞生而出现的一种 present 格式,Go 核心开发成员似乎十分喜欢以这种格式分享 Go 语言。在Golang 官方,几乎所有技术会议的 talk 幻灯片 均是以 .slide 形式提供的。.slide文件通过 web 服务来进行查看,有一个名为 present 的工具可以在本地查看 .slide 文…
1、Java数组介绍 在Java中,数组是用来存放同一种数据类型的集合,注意只能存放同一种数据类型(Object类型数组除外)。 在内存中,数组是一块连续的区域。 拿上面的看电影来说,这几个人在电影院必须坐在一起。 数组需要预留空间,在使用前要先申请占内存的大小,可能会浪费内存空间。 比如看电影时,为了保证10个人能坐在一起,必须提前订好10个连续的位置。这样的好处就是能保证10个人可以在一起。但是这样的缺点是,如果来的人不够10个,那么剩下的位置就浪费了。如果临时有多来了个人,那么10个就不够用了,这时可能需要将…