
Go语言学习
文章平均质量分 69
90Runner
工作了3年最近学习Python与Go希望有进一步的成长
展开
-
Go语言-接口
接口(interface)的定义接口代表一种调用契约,是多个方法声明的集合。接口要实现的是做什么,而不关心如何做。接口最常见的使用场景是对包外提供访问,或预留扩展空间。 Go语言接口实现机制很简洁,只要目标类型方法集内包含接口声明的全部方法,就被视为实现了该接口,无需做显示声明,当然目标类型可实现多个接口。 其实接口也是一中结构,只是编译器会对其做出很多限制: - 不能有字段 - 不能原创 2016-11-24 22:32:53 · 508 阅读 · 0 评论 -
Go net/PRC源码阅读server.go
Server端本篇文章主要是在Go net/rpc 的server.go包进行翻译,并添加注释之后会对client以及server进行总结,废话不多说 直接贴代码了。有不正确的地方还请多多指正。package rpcimport ( "bufio" "encoding/gob" "errors" "io" "log" "net" "net/ht原创 2017-07-02 16:25:30 · 907 阅读 · 0 评论 -
Go net/rpc 包总结
RPCrpc远程过程调用,go net/rpc包提供了通过网络访问一个对象的方法的能力。服务器需要注册对象, 通过对象的类型名暴露这个服务。注册后这个对象的输出方法就可以远程调用,这个库封装了底层传输的细节,包括序列化。服务器可以注册多个不同类型的对象,但是注册相同类型的多个对象的时候回出错。 通过阅读net/rpc包你可以学到互斥锁、goroutine、map、channel、interface原创 2017-07-02 17:29:01 · 2090 阅读 · 0 评论 -
Go net/PRC源码阅读client.go
Client端本篇文章主要是在go net/rpc 的client.go包进行翻译,并添加注释之后会对client以及server进行总结,废话不多说 直接贴代码了。有不正确的地方还请多多指正。package rpcimport ( "bufio" "encoding/gob" "errors" "io" "log" "net" "net/h原创 2017-07-02 16:14:33 · 965 阅读 · 0 评论 -
CentOS 7下安装nsq
CentOS 7安装nsqnsq简介NSQ 是实时的分布式消息处理平台,其设计的目的是用来大规模地处理每天数以十亿计级别的消息。它具有分布式和去中心化拓扑结构,该结构具有无单点故障、故障容错、高可用性以及能够保证消息的可靠传递的特征依赖nsq使用go语言编写,所以我们要安装go的环境。网上有说要去1.4版本以上,还有说要求是1.6版本以上。我就索性安装了1.8的版本。Go环境安装go环境中文版下载地原创 2017-08-09 16:00:55 · 3476 阅读 · 0 评论 -
golang interface理解
最早对interface的认知比较片面,很多人都说interface与channel是go语言的灵魂。然而在工作中使用的机会比较少,发现自己对interface的理解太片面。下面就记录并总结下go中的interface。interface是个啥go程序设计中是这样解释的“接口是一种抽象类型,他并没有暴露所包含数据的布局或者内部结构,当然也没有那些数据的基本操作,它所提供的仅仅是一些方法原创 2017-09-27 17:54:31 · 3387 阅读 · 0 评论 -
Go类型转换 实现
前言近日在查看博客的时候发现阅读量最多的是我转载的一片文章“Go语言类型转换”,看来像是go语言这种强类型的语言还是有很多人有需求要对go语言中变量进行类型转换。 在平时的工作中也用到了一些将当前时间转换的问题也一并写在了里面,希望对观看者有帮助。已经将代码上传到GitHub上,名字不太好,暂时还没有改名,各位想要使用可以直接下载或者拷贝出源码使用。 下载地址。简介转换代码主要包含时间的转换、b原创 2017-10-12 22:35:54 · 797 阅读 · 0 评论 -
Go Context包使用
前言做为go的使用者,大家应该都多多少少的见过Context包。可是因为我得懒惰都没有跳转进去好好看看,导致我对Context包理解并不深。写博客是一个很好的方式提醒自己不要懒惰,而且还能当成自己的笔记,平时翻一翻加深下记忆。Context使用场景目前总结两种使用场景: 1. 主动停止groutine 2. 传递数据Context是什么?Context直译为上下文,我们来看原创 2017-12-11 18:39:22 · 1467 阅读 · 0 评论 -
HTTP 状态码
一些常见的状态码为:200 - 服务器成功返回网页 404 - 请求的网页不存在 503 - 服务不可用 详细分解:1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态代码。代码 说明 100 (继续) 请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。 101 (切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。2xx (成功转载 2018-01-31 20:16:18 · 462 阅读 · 0 评论 -
深入了解 Go 方法
转:http://www.songjiayang.com/posts/shen-ru-liao-jie-go-yu-yan-de-fang-fa方法主要源于 OOP 语言,在传统面向对象语言中 (例如 C++), 我们会用一个“类”来封装属于自己的数据和函数,这些函数就叫做方法。虽然 Go 不是经典意义上的面向对象语言,但是我们也可以在一些接收者(例如自定义类型,结构体)上定义函数,同理这...转载 2018-02-28 10:28:42 · 390 阅读 · 0 评论 -
golang Glide 包管理windows下使用
安装安装这里就不相信的介绍了,我是参考了如下两篇文档 https://segmentfault.com/a/1190000005929355 http://studygolang.com/articles/7129 这里需要说明的是,大部分介绍gilde的文章都是在Linux下安装,在windows执行相关命令是不能执行的。 我这里只是go get github.com/Mastermind原创 2017-06-02 11:26:12 · 4561 阅读 · 0 评论 -
Go缓存库cache2go源码阅读
项目地址:https://github.com/muesli/cache2go/blob/master/README.md项目介绍cache2go: 一个并发安全,具有心跳功能的缓存库。核心功能只有3个文件。从中可以学习到,go语言中的锁、goroutine、map操作等。 主要特性如下: 1. 并发安全 2. 可设置缓存项的生命周期 3. 可设置缓存清理周期 4. 包含缓存增加、删除的原创 2017-06-06 16:20:07 · 3565 阅读 · 0 评论 -
Go语言-方法
方法方法是与对象实例绑定的特殊函数。方法是面向对象。方法和函数区别在于前者有前置实例接收参数,编译器以此确定方法所属类型。 可以为当前包,以及除接口和指针以外的任何类型定义方法。package mainimport( "fmt")type N intfunc (n N)toString()string{ //方法 return fmt.Sprintf("%#x原创 2016-11-24 22:06:49 · 608 阅读 · 0 评论 -
Go语言-数据
字符串字符串是不可变字节(byte)序列,其本身是一个复合结构。内置函数len可以返回字节数组长度,cap不接受字符串类型参数。字符串的默认值为”“而不是nil。Go语言中使用‘`’防转义。支持”!=、==、<、>、+、+=”操作符。允许以索引访问字节数字(非字符),但不能获取元素地址。func main(){ str := "abcde" fmt.Println(str[1])原创 2016-11-21 22:45:48 · 676 阅读 · 0 评论 -
Go语言-函数
函数定义函数是结构化编程的最小模块单元,使用关键字‘func’定义函数。Go语言定义函数的一些特点总结如下: - 无需前置声明 - 不支持命名嵌套定义 - 不支持同名函数重载 - 不支持默认参数 - 支持不定长变参 - 支持多返回值 - 支持命名返回值 - 支持匿名函数和闭包 函数属于第一类对象,具备相同签名(参数及返回值类型)的视为同一类型。 定义一个函数: func tes原创 2016-11-20 20:04:55 · 753 阅读 · 0 评论 -
Go语言-表达式
Go语言学之表达式保留的关键字Go语言仅有25个保留的关键字,下面我们就列举下这25个关键字 break default func interface select case defer go map struct chan else goto package switch const fallthrough if range原创 2016-11-20 16:27:11 · 1210 阅读 · 0 评论 -
Go语言-类型
前言:即将成为一名Golang语言的开发人员,把自己学习的过程记录下来与大家一起分享,希望能给您带来帮助,如果在编写的过程中有什么错误或者我说的不对的地方还请大家不吝赐教,给我留言我好及时做修改防止误导其他阅读人员,在此就先行感谢了! 声明:本问中的内容均出自《Go语言编程》、《Go语言学习笔记》、《Go并发编程实战》、以及视频“跟着无闻学Go”视频连接如下:[http://edu.51cto.c原创 2016-11-09 22:19:28 · 908 阅读 · 0 评论 -
Go语言-并发
并发的含义并发:逻辑上具备同时处理多个任务的能力 并行:物理上在同意时刻执行多个并发任务 多线程或多进程是并行的基本条件,但是单线程也可用协程做到并发。尽管协程在单个线程上通过主动切换来实现多任务并发。通常情况下,用多进程来实现分布式和负载均衡。用多线程抢夺更多的处理器资源。使用协程来提高处理器时间片利用率。 Go语言创建并发任务只需在函数调用前添加关键字“go”go print原创 2016-12-06 22:32:33 · 1846 阅读 · 0 评论 -
Go 文件读写
看了下go语言的标准库,最开始看了下io库想着看看go语言提供的函数如何实现文件的读写,粗略的看了下就想着使用go语言提供的方法读写文件试下吧。 读文件,示例:package mainimport ( "fmt" "io/ioutil" "os")const ( FILE = "./test.txt")//Read filefunc main(){原创 2017-03-07 16:40:23 · 1666 阅读 · 0 评论 -
Go语言类型转换
本文转自Golove博客:http://www.cnblogs.com/golove/p/3262925.htmlstrconv 包中的函数和方法atob.goParseBool 将字符串转换为布尔值 它接受真值:1, t, T, TRUE, true, True 它接受假值:0, f, F, FALSE, false, False. 其它任何值都返回一个错误func ParseBool(转载 2017-04-01 15:11:00 · 7257 阅读 · 0 评论 -
golang使用gRPC创建双向流模式
gRPC库介绍gRPC是一个高性能、通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发语言。 gRPC提供了一种简单的方法来精确地定义服务和为iOS、Android和后台支持服务自动生成可靠性很强的客户端功能库。 客户端充分利用高级流和链接功能,从而有助于节省带宽、降低的T原创 2017-05-03 14:31:06 · 14277 阅读 · 1 评论 -
Go 1.9 之后的sync包
sync.Mapgo 1.9之后加入了线程安全的map,sync.Map。 源码中的注释为我们说明了sync.Map,是一个并发的map,恒定时间调用loads、stores、deletes。同时被多个goroutines调用是安全的。 在使用时不允许分享这些属性,它可能导致更坏的性能与更坏的安全性,相比较于使用一个普通的map与读写锁配合使用。 零map是有效的并且是空的。 在使用之...原创 2018-03-22 17:13:44 · 776 阅读 · 0 评论