随笔分类 -  GoLang

摘要:协程同步 Mutex Go语言包中的sync包提供了两种锁类型:sync.Mutex和sync.RWMutex,前者是互斥锁,后者是读写锁。 使用锁的经典模式: var lck sync.Mutex func foo() { lck.Lock() defer lck.Unlock() // ... 阅读全文
posted @ 2020-10-13 17:07 如果的事 阅读(837) 评论(0) 推荐(0)
摘要:错误处理 error Go语言引入了一个错误处理的标准模式,即error接口,该接口定义如下: 对于大多数函数,如果要返回错误,可以将error作为多返回值的最后一个: 调用时的代码: 我们还可以自定义错误类型,一个例子: defer 你可以在Go函数中添加多个defer语句,当函数执行到最后时,这 阅读全文
posted @ 2017-11-23 16:43 如果的事 阅读(1079) 评论(0) 推荐(1)
摘要:反射 反射(reflect) 所谓反射(reflect)就是能检查程序在运行时的状态。 使用反射的三条定律: 使用reflect一般分成三步: 1、要去反射是一个类型的值(这些值都实现了空接口),首先需要把它转化成reflect对象(reflect.Type 或 reflect.Value): 2、 阅读全文
posted @ 2017-11-23 15:18 如果的事 阅读(465) 评论(0) 推荐(0)
摘要:Kite Kite是用Go开发的一套RPC库,很适合作为分布式微服务的开发框架。 Kite 的传输层使用 SockJS 提供的WebSocket服务, 浏览器Javascript也可以连接到Kite上 (Kite.js); Kite 的RPC消息格式使用修改过的 dnode 协议,Kite 增加了 阅读全文
posted @ 2017-05-13 13:25 如果的事 阅读(16170) 评论(0) 推荐(0)
摘要:strings包 strings包的使用举例: bytes包 1、大小写转换 2、比较 3、替换 4、清除 5、分割、连接 6、子串 7、 NewReader创建一个从s读取数据的Reader。 buffer包 bytes.buffer是一个缓冲byte类型的缓冲器,这个缓冲器里存放着都是byte。 阅读全文
posted @ 2017-05-09 15:15 如果的事 阅读(8776) 评论(0) 推荐(0)
摘要:GoLang之协程 目前,WebServer几种主流的并发模型: 多线程,每个线程一次处理一个请求,在当前请求处理完成之前不会接收其它请求;但在高并发环境下,多线程的开销比较大; 基于回调的异步IO,如Nginx服务器使用的epoll模型,这种模式通过事件驱动的方式使用异步IO,使服务器持续运转,但 阅读全文
posted @ 2015-05-15 16:35 如果的事 阅读(30678) 评论(0) 推荐(4)
摘要:GoLang之网络Go语言标准库里提供的net包,支持基于IP层、TCP/UDP层及更高层面(如HTTP、FTP、SMTP)的网络操作,其中用于IP层的称为Raw Socket。net包的Dial()函数用于创建网络连接,函数原型如下:func Dial(net, addr string) (Con... 阅读全文
posted @ 2015-05-15 15:54 如果的事 阅读(11094) 评论(0) 推荐(1)
摘要:GoLang之方法与接口 Go语言没有沿袭传统面向对象编程中的诸多概念,比如继承、虚函数、构造函数和析构函数、隐藏的this指针等。 方法 Go 语言中同时有函数和方法。方法就是一个包含了接受者(receiver)的函数,receiver可以是内置类型或者结构体类型的一个值或者是一个指针。所有给定类 阅读全文
posted @ 2015-05-13 00:23 如果的事 阅读(11559) 评论(0) 推荐(0)
摘要:GoLang之基础 Go是一种并发的、带垃圾回收的、快速编译的语言。 一个例子: 说明: 1、每个go源代码文件的开头都是一个package声明,表示该go代码所属的包;包是go语言中最基本的分发单位,也是工程管理中依赖关系的体现。要生成go可执行程序,必须建立一个名为main的package,并且 阅读全文
posted @ 2015-05-04 22:10 如果的事 阅读(1769) 评论(0) 推荐(0)