- 博客(6)
- 资源 (3)
- 收藏
- 关注
原创 GO 语言websocket编程
GO提供原生的websocket API,使用时go get然后引用即可 golang.org/x/net/websocket 使用起来也很方便,直接上代码吧。一个echo server的代码package mainimport( "golang.org/x/net/websocket" "fmt" "net/http" "flag")type WSServer
2017-12-19 18:18:52 8422 2
原创 GO通道chan
chan用于goroutine间的通信1、基础有缓冲通道和无缓冲通道无缓冲通道:make(chan int) 有缓冲通道:make(chan int, 5)无缓冲通道会导致发送和接收的goroutine同步化主要体现在如下两点: - 无缓冲通道会使发送goroutine阻塞,直到对应的chan上有接收者package mainimport (
2017-12-12 20:31:41 946
原创 不要通过共享内存来通信,要通过通信来共享内存
“不要通过共享内存来通信,要通过通信来共享内存”,这句话是GO社区中非常经典的一句话,但是我们如何理解这句话呢? GO语言的协程(goroutine)是从进程、线程基础上发展而来的,它比进程线程更轻量级,但是都是为并发而生。既然是并发,那么不可避免的会有多个不同并发实体之间传播或者交换信息,也即通信。要理解“不要通过共享内存来通信,要通过通信来共享内存”这句话,我们得从跟进程线程间通信的比较来了解
2017-12-12 19:29:43 5624 2
原创 命令行解析:flag
一般使用在写命令行程序(工具、server)时,对命令参数进行解析是常见的需求。Go的命令行参数解析通过flag包实现,先看下面这个例子,假设我们实现了一个server,启动这个server的时候需要指定监听的tcp地址(例如:127.0.0.1:1314)、配置文件、监听的http地址(例如:127.0.0.1:6666)。启动命令如下: ./server -tcpAddr 127.0.0.1
2017-12-12 19:27:01 1931
原创 切片(slice)
切片是动态数组,比数组灵活。数组长度不可变,但是切片可以追加。 切片原型定义如下:struct Slice{ byte *array; unit32 len; unit32 cap;};它抽象为以下三个部分: 1. 指向被引用的底层数组的指针; 2. 切片中元素的个数; 3. 切片分配的存储空间。声明、定义和初始化声明一个切片:var sliceTest []int声明的切片
2017-12-12 19:24:37 974
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人