主题
文章
项目
资源
图书
Go网址导航
下载
官方文档
英文文档
中文文档
标准库中文版
Go指南
注册
登录
首页
会员
reckless-huang的信息
TA的收藏
初级会员
第 56041 位会员
ID:
reckless-huang
注册时间:
2020-08-27 04:25:34
是否在线:
Offline
财富:
19
50
更多>>
最近发布的主题
Go问与答
反射是如何创建结构体的呢,抄了老师的代码,但是看不明白,来这里请教一些各位
at
2020-08-29 13:33:42
Go问与答
有老师能帮忙看看我的获取素数代码哪里有问题么,我只能取到一个素数3
at
2020-08-27 09:32:27
更多>>
最近发布的文章
暂无
更多>>
最近分享的资源
暂无
更多>>
最近发布的项目
暂无
更多>>
最近的评论
2020-09-08 16:20:25
评论了
主题
有老师能帮忙看看我的获取素数代码哪里有问题么,我只能取到一个素数3
#8
楼
@lihongbin
学到了,谢谢您,还能请教您一个小问题么,我的一段代码 ````go func (this *ExitMes) ExitMesProcess(mes *message.Message) (err error) { fmt.Println(mes) var exitMes message.ExitMes err = json.Unmarshal([]byte(mes.Data), &exitMes) fmt.Println(err) data, err := json.Marshal(exitMes) fmt.Println(string(data)) //println(*exitMes) if err != nil { err = model.ERROR_JSON_UNMARSHAL return } //根据userId将用户从在线列表中剔除 userMgr.DelOnlineUser(exitMes.User.UserId) //将这条用户退出消息广播给其他在线用户 sp := SmsProcess{} //println(mes) sp.SendGroupSms(mes) return } ```` 然而反序列的值无法写入到exitMes这个变量中
2020-08-31 22:17:23
评论了
主题
GORM v2 正式发布! 20k stars ;)
新手入门
2020-08-29 13:34:22
评论了
主题
反射是如何创建结构体的呢,抄了老师的代码,但是看不明白,来这里请教一些各位
不明白model怎么和elem关联的
2020-08-28 09:01:24
评论了
主题
有老师能帮忙看看我的获取素数代码哪里有问题么,我只能取到一个素数3
5楼
@lihongbin
谢谢您,判断那里的确有问题,flag = true 写在循环体是因为每次循环结束后flag的值被置为false了,要改回来,下面一楼有我改好的代码,您可以帮忙看看有可以优化的么
2020-08-28 08:59:35
评论了
主题
有老师能帮忙看看我的获取素数代码哪里有问题么,我只能取到一个素数3
更新后的代码如下,可以正常工作,就是感觉不够优雅 ```go package main import ( "fmt" _ "sync" ) func writeData(intChan chan int) { for i := 1; i < 80; i++ { intChan <- i } fmt.Println("writeData()执行完毕") fmt.Println("关闭intChan") close(intChan) } func judgData(intChan chan int, resultChan chan int, exitChan chan bool) { //time.Sleep(time.Millisecond *100) //fmt.Println("开始读取intChan") flag := true for { flag = true //重置标志位,因为后面这个值被设置为false了 num, ok := <-intChan if !ok { fmt.Println("数据读取完毕") break } for a := 2; a < num; a++ { if num%a == 0 { flag = false break } } if flag { resultChan <- num } } exitChan <- true fmt.Println("一个协程执行完毕") } func main() { intChan := make(chan int, 10000) resultChan := make(chan int, 10000) exitChan := make(chan bool, 8) //var wgw sync.WaitGroup //var wgr sync.WaitGroup //wgw.Add(1) //wgr.Add(8) go writeData(intChan) //go writeData(intChan, wgw.Done) //wgw.Wait() //close(intChan) for i := 0; i < 8; i++ { go judgData(intChan, resultChan, exitChan) } go func() { for sec := 0; sec < 8; sec++ { <-exitChan //如果没有值就会等待值写入,造成主线程的阻塞 } close(resultChan) }() // 这里用协程是不让这个取值堵塞主线程的取值 //time.Sleep(time.Second *10) //wgr.Wait() for { key, ok := <-resultChan if !ok { //这里会因为上面的协程没结束,没有关闭resultChan,ok的值一直未true而阻塞一直到所有协程执行完毕 break } fmt.Printf("素数:%v\n", key) } } ```
最新主题
|
最新资源
|
最新评论
X
登录和大家一起探讨吧
用户名
密码
记住登录状态
登录
GitHub 登录
忘记密码?
还不是会员
现在注册
最近的评论