回复了 qianlnk 创建的主题: golang实现类似try...catch...的异常处理机制
不错的trick
就好像在Lua里面实现类似C++里的Class一样,虽然可以用,但是其实背离了语言最初的设计哲学。
ichenq
回复了 qianlnk 创建的主题: golang实现类似try...catch...的异常处理机制
不错的trick
就好像在Lua里面实现类似C++里的Class一样,虽然可以用,但是其实背离了语言最初的设计哲学。
回复了 baiyuxiong 创建的主题: 如何比较好的同时退出多个goroutine?
回复4楼
虽然Read是阻塞的,
但是处理其它goroutine的退出的时候,可以Close这个Conn对象,然后Read就返回error了
回复了 baiyuxiong 创建的主题: 有没有这样的开源tcp服务?
这些都不难。
1、TCP Server
使用net包即可
2、可以管理无数个终端连接
使用一个map作为所有TCPConn的容器,再加mutex支持线程安全
3、管理终端的上线、心跳、下线
上线就是终端connect上来,
心跳就是终端每隔X秒发消息过来,
下线就是Read()返回error
4、每个终端有ID,可以在后台或者接口向指定的终端发消息
用一个int在配合atomic做自增即可
这些在Go里面已经很好做了,
其实最麻烦是协议解析部分
回复了 745588988 创建的主题: 关于golang计时器的一个问题,请教一下
操作系统提供了定时任务的接口,Linux的cron,Windows的任务计划程序,只需要做好配置,让系统在XX时刻调用你的程序就行了。
回复了 xz6597863 创建的主题: golang float运算疑问
楼主可以了解一下IEEE-754浮点数标准
回复了 mysll 创建的主题: go的protobuf这个问题是不是一个bug?
在执行protoc命令的时候,例如:protoc --go_out=. a.proto
如果a.proto文件import了b.proto,那么需要在命令行里包含b.proto,如:
protoc --go_out=. a.proto b.proto
或者简单点,把所有proto文件放在一个目录:
protoc --go_out=. *.proto
参考官方protobuf的issue 67
回复了 ichenq 创建的主题: golang如何在对TCPConn进行Read的时候能够对它进行Write?
@stevewang
非常谢谢,那么明显的文档说明一直没有注意到~
回复了 ohko 创建的主题: 超长float64位计算,不知是BUG还是使用错误,请高人指教!
我的没有任何问题啊, go 1.5, Ubuntu 14.04
func main() {
var a float64 = 12959653081233152683760791820268915873095215894259158297207384037775798390732947435759407568730776231939495920976951779674164698735094020653357745276190720
var b float64 = 38702708391292475707970394122420465445262695173878312073868790125970680813462212621273021068406482338979482750490461442604850467520473202688
c := "12959653081233191386469183112744623843489338314724603559902557916087872259523073406440221030943397504960564327459290759156915189196536625503825265749393408"
var sum = strconv.FormatFloat(a+b, 'f', 0, 64)
fmt.Println(sum)
fmt.Println("equal:", sum == c)
}