Go
文章平均质量分 69
furfur-jiang
你若盛开,清风自来
公众号:程序江
展开
-
策略模式+单例模式(go)
不够满意,go的初始化操作只有init,整个包的初始化都要统一放在一个函数,没有像python的__init__这样一个类自己有一个自执行函数,这样修改go的init函数貌似也破坏了开闭原则,所以只想到放在main。方案2:使用策略模式,抽象一层奖励策略接口,具体的奖励类型作为具体的策略实现这一奖励策略接口,增加一个环境类(内免除不了分支判断),供给奖励服务调用。环境类新增Map注册表,注册所有具体策略,传入奖励类型,就可以通过map匹配到具体策略。Strategy策略:定义所有支持的算法的公共接口。原创 2023-05-19 20:51:55 · 1401 阅读 · 0 评论 -
Go并发情况下debug调试无法进入所需调试goroutine,附带并发测试代码
在使用go语法的时候,由于并发情况,只能调试一个goroutine,但存在随机性,难指定找到你所需的线程直接切换即可跳转。没有找到同时调试多个的办法,理论上是不行的,不然就不叫并发了。特殊情况:此线程监控某事件,执行一半首先断点打到用go修饰的函数,在go修饰的函数里面打个断点执行debug的时候,在到了go修饰函数的时候使用resume program直接进入修饰函数里面(step into 进不去,run to cursor也可以,鼠标放在所需位置即可)原创 2023-05-12 12:04:53 · 1826 阅读 · 0 评论 -
Go程序设计语言翻译问题(goroutine)
但是,由于 wg.Wait() 的计数器一直没有被归零(因为wg.Add(1)执行了),阻塞,worker goroutine 无法向 sizes 通道发送消息,因此 for f := range filenames 循环会一直等待下去,从而导致程序陷入死锁状态。如果放在主goroutine循环后,因为如果没有go,sizes管道只能放入一个内容,而wg.Wait()会阻塞,导致无法执行到for size := range sizes(循环去除放入的管道内容),我个人不太喜欢这个简单的解释,原创 2023-05-16 19:18:31 · 1199 阅读 · 0 评论