Skip to end of metadata
Go to start of metadata

GoFrame是一款模块化、高性能、企业级的Go基础开发框架。GoFrame不是一款WEB/RPC框架,而是一款通用性的基础开发框架,是Golang标准库的一个增强扩展级,包含通用核心的基础开发组件,优点是实战化、模块化、文档全面、模块丰富、易用性高、通用性强、面向团队。

如果您想使用Golang开发一个业务型项目,无论是小型还是中大型项目,GoFrame是您的不二之选。如果您想开发一个Golang组件库,GoFrame提供开箱即用、丰富强大的基础组件库也能助您的工作事半功倍。

特点

  • 业内领先、工程完备
  • 模块化、松耦合设计
  • 组件丰富、开箱即用
  • 简洁易用、文档详尽
  • 接口化、高扩展性设计
  • 全链路跟踪特性
  • 全错误堆栈特性
  • 接口化的错误码支持
  • 稳健的工程设计规范
  • 更便捷强大的ORM组件
  • 便捷的开发工具、自动化代码生成
  • 支持OpenTelemetry可观测性标准
  • 自动化的接口文档生成,支持OpenAPIV3标准
  • 完善的本地中文化支持
  • 设计为团队及企业使用

地址

安装

go get -u -v github.com/gogf/gf/v2

推荐使用 go.mod:

require github.com/gogf/gf/v2 latest

限制

golang版本 >= 1.15

架构

帮助

  • 扣扣交流群:扫描或群号搜索添加

    GoFrame实战1群

    GoFrame实战2群



    已满

    74341849

  • 微信交流群:扫描或微信添加389961817备注GF加群

    添加后拉群

  • 微信公众号:关注GoFrame的发展动态

建议通过阅读GoFrame的源码以及API文档深度学习GoFrame,了解更多的精妙设计。

协议

GoFrame 使用非常友好的 MIT 开源协议进行发布,永久100%开源免费。

荣誉

用户

在这里只列举了部分知名的用户,如果您的企业或者产品正在使用GoFrame,欢迎到 这里 留言。

贡献

感谢所有参与GoFrame开发的贡献者。 [贡献者列表].

捐赠

如果您喜欢GoFrame,要不给开发者 来杯咖啡 吧! 请在捐赠时备注您的github/gitee账号名称。

赞助

赞助支持GoFrame框架的快速研发,如果您感兴趣,请联系 微信 389961817 / 邮件 john@goframe.org

感谢

 



  • No labels

29 Comments

  1. 老王到此一游,顺便说一句 GoFrame好,香

    1. 又过了一年(这一年过的也太快了!!!),回来再评论一下,Goframe还是很好用,很香

  2. 文档换成了confluence,以后confluence7.10.0是最后一个部署版本了,https://www.atlassian.com/software/confluence/download 

    We’re making changes to our server and Data Center products, including the end of sale for new server licenses on February 2, 2021 and the end of support for server on February 2, 2024. 

    如上页面提示confluence以后只是云上版本了。 从github切换到这第一次有点不习惯

    1. 现在这个Confluence是由Atlassian赞助的正版授权,可惜Confluence Cloud没有在中国区部署业务,不然也可以使用Cloud版本。

    2. 左侧菜单刷新体验不是很好,但奈何功能强大,还是支持👍

  3. 手机版左侧菜单东西太少了,导致我都不知道怎么找其他的功能说明

  4. 蛮优雅的一个框架(相比其它框架,开发效率要高),文档也比较详细,希望 GoFrame 能像 Laravel 一样以后拥有自己的框架生态。

  5. 希望越来越好,用起来真简单

  6. 强哥好, 这个框架方便结合gomock, sqlmock等package做各层(api/service/dao)的单元测试吗, 如果使用这些包的话, 各层是不是就不能通过全局变量实例来对外暴露接口了

  7. 最完整易用的文档,没有之一! 不接受任何反驳

  8. 设计的真牛逼的框架

  9. 8.1号的更新好久能到,期待新特性

  10. 你好,没有gf命令是怎么回事啊?执行了go get -u -v github.com/gogf/gf,但是没有gf命令,-bash: gf: command not found

    1. gf command 不能在系统的环境变量中找到!  请检查是否配置gf的环境变量。

      1. 谢谢你。好像还得编译什么的,一直没搞成功,直接问同事要了一个,好难搞啊。

        1. 代码生成-gen

          可以安装gf-cli工具,就可以使用gf命令了

  11. 首先感谢出了如此强大的框架,越用惊喜越多。是否可以把plugin怎么封装更好介绍一下。plugin的功能感觉还是挺好的。

  12. 第一次见做得这么晚上的框架,作者大佬哇

  13. 之后会实现EventBus和用户认证功能吗?

  14. 强烈期待2.0的正式发布😀

  15. 太强大了,用起来很爽,不知后续能融进微服务框架的特性进去么?

  16. GoFrame怎么实现热插拔,插件化

  17. ljs

    程序运行时经常意外退出,下面是报错

    Starting: C:\Go\bin\dlv.exe dap --check-go-version=false --listen=127.0.0.1:62764 from H:\go\syncf\v2
    DAP server listening at: 127.0.0.1:62764
    2022-04-07 16:55:58.950 [DEBU] SetServerRoot path: H:\go\syncf\v2\resource\public
    2022-04-07 16:55:58.958 [INFO] swagger ui is serving at address: http://127.0.0.1:8199/swagger/
    2022-04-07 16:55:58.959 [INFO] openapi specification is serving at address: http://127.0.0.1:8199/api.json
    2022-04-07 16:55:58.960 [INFO] pid[12080]: http server started listening on [:8199]
    2022-04-07 16:56:00.652 {a04ca61f6791e316037a1d426dcaf5b1} 200 "GET http 127.0.0.1:8199 /admin/index/index HTTP/1.1" 0.007, 127.0.0.1, "", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36"
    ...

    ...
    2022-04-07 17:04:16.663 {e06e8a9cda91e316917a1d42efc3876f} 200 "GET http 127.0.0.1:8199 /static/admin/assets/layer/theme/default/layer.css?v=3.1.1 HTTP/1.1" 0.001, 127.0.0.1, "http://127.0.0.1:8199/admin/index/index", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36"
    2022-04-07 17:04:16.720 {4475f49fda91e316927a1d42bc582034} 200 "GET http 127.0.0.1:8199 /favicon.ico HTTP/1.1" 0.001, 127.0.0.1, "http://127.0.0.1:8199/admin/index/index", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36"
    Exception 0xc0000008 0x0 0x0 0x7ffe209f0c7a
    PC=0x7ffe209f0c7a
    runtime.cgocall(0xeffae0, 0xc000056ee0)
        C:/Program Files/Go/src/runtime/cgocall.go:156 +0x4a fp=0xc0000f3858 sp=0xc0000f3820 pc=0xe943ea
    syscall.Syscall(0x7ffe1de848e0, 0x1, 0x25c, 0x0, 0x0)
        C:/Program Files/Go/src/runtime/syscall_windows.go:479 +0xe6 fp=0xc0000f3890 sp=0xc0000f3858 pc=0xefa546
    syscall.Syscall(0xc0000307e0, 0x0, 0x0, 0x0, 0x0)
        <autogenerated>:1 +0x2b fp=0xc0000f38e0 sp=0xc0000f3890 pc=0xf0098b
    syscall.CloseHandle(0x25c)
        C:/Program Files/Go/src/syscall/zsyscall_windows.go:482 +0x48 fp=0xc0000f3950 sp=0xc0000f38e0 pc=0xf76768
    github.com/fsnotify/fsnotify.(*Watcher).startRead(0xc0003e1880, 0xc000340000)
        C:/Users/Administrator/go/pkg/mod/github.com/fsnotify/fsnotify@v1.5.1/windows.go:343 +0x1c7 fp=0xc0000f3af8 sp=0xc0000f3950 pc=0x14c7667
    github.com/fsnotify/fsnotify.(*Watcher).readEvents(0xc0003e1880)
        C:/Users/Administrator/go/pkg/mod/github.com/fsnotify/fsnotify@v1.5.1/windows.go:512 +0x1086 fp=0xc0000f3fc0 sp=0xc0000f3af8 pc=0x14c8a86
    github.com/fsnotify/fsnotify.NewWatcher·dwrap·1()
        C:/Users/Administrator/go/pkg/mod/github.com/fsnotify/fsnotify@v1.5.1/windows.go:47 +0x2b fp=0xc0000f3fe0 sp=0xc0000f3fc0 pc=0x14c56cb
    runtime.goexit()
        C:/Program Files/Go/src/runtime/asm_amd64.s:1581 +0x1 fp=0xc0000f3fe8 sp=0xc0000f3fe0 pc=0xefe201
    created by github.com/fsnotify/fsnotify.NewWatcher
        C:/Users/Administrator/go/pkg/mod/github.com/fsnotify/fsnotify@v1.5.1/windows.go:47 +0x2f5

    goroutine 1 [chan receive, 9 minutes]:
    github.com/gogf/gf/v2/net/ghttp.(*Server).Run(0xc0002ae300)
        C:/Users/Administrator/go/pkg/mod/github.com/gogf/gf/v2@v2.0.5-0.20220318035202-d7764e29684a/net/ghttp/ghttp_server.go:423 +0x199
    syncfuli/internal/cmd.glob..func1({0x19d1180, 0xc000456270}, 0xc0003e1900)
        H:/go/syncf/v2/internal/cmd/cmd.go:76 +0x319
    github.com/gogf/gf/v2/os/gcmd.(*Command).doRun(0x2134040, {0x19d1180, 0xc000456270}, 0xc0003e1900)
        C:/Users/Administrator/go/pkg/mod/github.com/gogf/gf/v2@v2.0.5-0.20220318035202-d7764e29684a/os/gcmd/gcmd_command_run.go:117 +0x3f0
    github.com/gogf/gf/v2/os/gcmd.(*Command).RunWithValueError(0x2134040, {0x19d1180, 0xc0004561e0})
        C:/Users/Administrator/go/pkg/mod/github.com/gogf/gf/v2@v2.0.5-0.20220318035202-d7764e29684a/os/gcmd/gcmd_command_run.go:68 +0x15f
    github.com/gogf/gf/v2/os/gcmd.(*Command).RunWithValue(0x2134040, {0x19d1180, 0xc0004561e0})
        C:/Users/Administrator/go/pkg/mod/github.com/gogf/gf/v2@v2.0.5-0.20220318035202-d7764e29684a/os/gcmd/gcmd_command_run.go:32 +0x76
    github.com/gogf/gf/v2/os/gcmd.(*Command).Run(0x2134040, {0x19d1180, 0xc0004561e0})
        C:/Users/Administrator/go/pkg/mod/github.com/gogf/gf/v2@v2.0.5-0.20220318035202-d7764e29684a/os/gcmd/gcmd_command_run.go:26 +0x28
    main.main()
        H:/go/syncf/v2/main.go:14 +0x45

    goroutine 4 [chan send]:
    github.com/gogf/gf/v2/util/grand.asyncProducingRandomBufferBytesLoop()
        C:/Users/Administrator/go/pkg/mod/github.com/gogf/gf/v2@v2.0.5-0.20220318035202-d7764e29684a/util/grand/grand_buffer.go:45 +0x1ff
    created by github.com/gogf/gf/v2/util/grand.init.0
        C:/Users/Administrator/go/pkg/mod/github.com/gogf/gf/v2@v2.0.5-0.20220318035202-d7764e29684a/util/grand/grand_buffer.go:25 +0x25

    goroutine 34 [chan receive]:
    github.com/gogf/gf/v2/os/gtimer.(*Timer).loop.func1()
        C:/Users/Administrator/go/pkg/mod/github.com/gogf/gf/v2@v2.0.5-0.20220318035202-d7764e29684a/os/gtimer/gtimer_timer_loop.go:21 +0xf3
    created by github.com/gogf/gf/v2/os/gtimer.(*Timer).loop
        C:/Users/Administrator/go/pkg/mod/github.com/gogf/gf/v2@v2.0.5-0.20220318035202-d7764e29684a/os/gtimer/gtimer_timer_loop.go:13 +0x68

    goroutine 11 [chan receive]:
    github.com/gogf/gf/v2/container/gqueue.(*Queue).asyncLoopFromListToChannel(0xc000295380)
        C:/Users/Administrator/go/pkg/mod/github.com/gogf/gf/v2@v2.0.5-0.20220318035202-d7764e29684a/container/gqueue/gqueue.go:70 +0xe5
    created by github.com/gogf/gf/v2/container/gqueue.New
        C:/Users/Administrator/go/pkg/mod/github.com/gogf/gf/v2@v2.0.5-0.20220318035202-d7764e29684a/container/gqueue/gqueue.go:56 +0x2ee

    goroutine 13 [select]:
    github.com/gogf/gf/v2/os/gfsnotify.(*Watcher).watchLoop.func1()
        C:/Users/Administrator/go/pkg/mod/github.com/gogf/gf/v2@v2.0.5-0.20220318035202-d7764e29684a/os/gfsnotify/gfsnotify_watcher_loop.go:20 +0x130
    created by github.com/gogf/gf/v2/os/gfsnotify.(*Watcher).watchLoop
        C:/Users/Administrator/go/pkg/mod/github.com/gogf/gf/v2@v2.0.5-0.20220318035202-d7764e29684a/os/gfsnotify/gfsnotify_watcher_loop.go:18 +0x68

    goroutine 14 [chan receive]:
    github.com/fsnotify/fsnotify.(*Watcher).Remove(0xc0003e1880, {0xc000795780, 0x3b})
        C:/Users/Administrator/go/pkg/mod/github.com/fsnotify/fsnotify@v1.5.1/windows.go:96 +0x1b5
    github.com/gogf/gf/v2/os/gfsnotify.(*Watcher).eventLoop.func1()
        C:/Users/Administrator/go/pkg/mod/github.com/gogf/gf/v2@v2.0.5-0.20220318035202-d7764e29684a/os/gfsnotify/gfsnotify_watcher_loop.go:61 +0x109
    created by github.com/gogf/gf/v2/os/gfsnotify.(*Watcher).eventLoop
        C:/Users/Administrator/go/pkg/mod/github.com/gogf/gf/v2@v2.0.5-0.20220318035202-d7764e29684a/os/gfsnotify/gfsnotify_watcher_loop.go:54 +0x68
    goroutine 16 [IO wait, 3 minutes]:
    internal/poll.runtime_pollWait(0xc0007d40f0, 0x72)
        C:/Program Files/Go/src/runtime/netpoll.go:229 +0x45
    internal/poll.(*pollDesc).wait(0xc00010e938, 0x72, 0x0)
        C:/Program Files/Go/src/internal/poll/fd_poll_runtime.go:84 +0x88
    internal/poll.execIO(0xc00010e798, 0xc0000c7390)
        C:/Program Files/Go/src/internal/poll/fd_windows.go:175 +0x2d0
    internal/poll.(*FD).acceptOne(0xc00010e780, 0x2e0, {0xc0007d40f0, 0x2, 0x2}, 0xc00010e798)
        C:/Program Files/Go/src/internal/poll/fd_windows.go:810 +0xfd
    internal/poll.(*FD).Accept(0xc00010e780, 0xc0000c77c0)
        C:/Program Files/Go/src/internal/poll/fd_windows.go:844 +0x446
    net.(*netFD).accept(0xc00010e780)
        C:/Program Files/Go/src/net/fd_windows.go:139 +0xc5
    net.(*TCPListener).accept(0xc000004078)
        C:/Program Files/Go/src/net/tcpsock_posix.go:140 +0x55
    net.(*TCPListener).Accept(0xc000004078)
        C:/Program Files/Go/src/net/tcpsock.go:262 +0x67
    net/http.(*Server).Serve(0xc000064000, {0x19cb728, 0xc000004078})
        C:/Program Files/Go/src/net/http/server.go:3001 +0x530
    github.com/gogf/gf/v2/net/ghttp.(*gracefulServer).doServe(0xc0002303f0, {0x19d1110, 0xc0000240c0})
        C:/Users/Administrator/go/pkg/mod/github.com/gogf/gf/v2@v2.0.5-0.20220318035202-d7764e29684a/net/ghttp/ghttp_server_graceful.go:171 +0x2fe
    github.com/gogf/gf/v2/net/ghttp.(*gracefulServer).ListenAndServe(0xc0002303f0)
        C:/Users/Administrator/go/pkg/mod/github.com/gogf/gf/v2@v2.0.5-0.20220318035202-d7764e29684a/net/ghttp/ghttp_server_graceful.go:78 +0x113
    github.com/gogf/gf/v2/net/ghttp.(*Server).startServer.func1(0xc0002303f0)
        C:/Users/Administrator/go/pkg/mod/github.com/gogf/gf/v2@v2.0.5-0.20220318035202-d7764e29684a/net/ghttp/ghttp_server.go:549 +0x16f
    created by github.com/gogf/gf/v2/net/ghttp.(*Server).startServer
        C:/Users/Administrator/go/pkg/mod/github.com/gogf/gf/v2@v2.0.5-0.20220318035202-d7764e29684a/net/ghttp/ghttp_server.go:543 +0x771

    goroutine 3515 [IO wait]:
    internal/poll.runtime_pollWait(0xc00071a518, 0x72)
        C:/Program Files/Go/src/runtime/netpoll.go:229 +0x45
    internal/poll.(*pollDesc).wait(0xc00071a6b8, 0x72, 0x0)
        C:/Program Files/Go/src/internal/poll/fd_poll_runtime.go:84 +0x88
    internal/poll.execIO(0xc00071a518, 0x19779d8)
        C:/Program Files/Go/src/internal/poll/fd_windows.go:175 +0x2d0
    internal/poll.(*FD).Read(0xc00071a500, {0xc000381000, 0x1000, 0x1000})
        C:/Program Files/Go/src/internal/poll/fd_windows.go:441 +0x49a
    net.(*netFD).Read(0xc00071a500, {0xc000381000, 0x1000, 0x1000})
        C:/Program Files/Go/src/net/fd_posix.go:56 +0x73
    net.(*conn).Read(0xc000aa6178, {0xc000381000, 0x1000, 0x1000})
        C:/Program Files/Go/src/net/net.go:183 +0xa9
    net/http.(*connReader).Read(0xc000212660, {0xc000381000, 0x1000, 0x1000})
        C:/Program Files/Go/src/net/http/server.go:780 +0x22c
    bufio.(*Reader).fill(0xc000354a20)
        C:/Program Files/Go/src/bufio/bufio.go:101 +0x294
    bufio.(*Reader).Peek(0xc000354a20, 0x4)
        C:/Program Files/Go/src/bufio/bufio.go:139 +0x178
    net/http.(*conn).serve(0xc0003f8140, {0x19d10d8, 0xc0000b2e80})
        C:/Program Files/Go/src/net/http/server.go:1954 +0x1a8c
    created by net/http.(*Server).Serve
        C:/Program Files/Go/src/net/http/server.go:3033 +0xa38

    goroutine 3536 [IO wait]:
    internal/poll.runtime_pollWait(0xc0002a7918, 0x72)
        C:/Program Files/Go/src/runtime/netpoll.go:229 +0x45
    internal/poll.(*pollDesc).wait(0xc0002a7ab8, 0x72, 0x0)
        C:/Program Files/Go/src/internal/poll/fd_poll_runtime.go:84 +0x88
    internal/poll.execIO(0xc0002a7918, 0x19779d8)
        C:/Program Files/Go/src/internal/poll/fd_windows.go:175 +0x2d0
    internal/poll.(*FD).Read(0xc0002a7900, {0xc00037a000, 0x1000, 0x1000})
        C:/Program Files/Go/src/internal/poll/fd_windows.go:441 +0x49a
    net.(*netFD).Read(0xc0002a7900, {0xc00037a000, 0x1000, 0x1000})
        C:/Program Files/Go/src/net/fd_posix.go:56 +0x73
    net.(*conn).Read(0xc000872450, {0xc00037a000, 0x1000, 0x1000})
        C:/Program Files/Go/src/net/net.go:183 +0xa9
    net/http.(*connReader).Read(0xc000212b70, {0xc00037a000, 0x1000, 0x1000})
        C:/Program Files/Go/src/net/http/server.go:780 +0x22c
    bufio.(*Reader).fill(0xc000116960)
        C:/Program Files/Go/src/bufio/bufio.go:101 +0x294
    bufio.(*Reader).Peek(0xc000116960, 0x4)
        C:/Program Files/Go/src/bufio/bufio.go:139 +0x178
    net/http.(*conn).serve(0xc000386820, {0x19d10d8, 0xc0000b2fc0})
        C:/Program Files/Go/src/net/http/server.go:1954 +0x1a8c
    created by net/http.(*Server).Serve
        C:/Program Files/Go/src/net/http/server.go:3033 +0xa38

    goroutine 3505 [IO wait]:
    internal/poll.runtime_pollWait(0xc000654298, 0x72)
        C:/Program Files/Go/src/runtime/netpoll.go:229 +0x45
    internal/poll.(*pollDesc).wait(0xc000654438, 0x72, 0x0)
        C:/Program Files/Go/src/internal/poll/fd_poll_runtime.go:84 +0x88
    internal/poll.execIO(0xc000654298, 0x19779d8)
        C:/Program Files/Go/src/internal/poll/fd_windows.go:175 +0x2d0
    internal/poll.(*FD).Read(0xc000654280, {0xc00087e000, 0x1000, 0x1000})
        C:/Program Files/Go/src/internal/poll/fd_windows.go:441 +0x49a
    net.(*netFD).Read(0xc000654280, {0xc00087e000, 0x1000, 0x1000})
        C:/Program Files/Go/src/net/fd_posix.go:56 +0x73
    net.(*conn).Read(0xc0006f80b8, {0xc00087e000, 0x1000, 0x1000})
        C:/Program Files/Go/src/net/net.go:183 +0xa9
    net/http.(*connReader).Read(0xc0000d5e30, {0xc00087e000, 0x1000, 0x1000})
        C:/Program Files/Go/src/net/http/server.go:780 +0x22c
    bufio.(*Reader).fill(0xc000092840)
        C:/Program Files/Go/src/bufio/bufio.go:101 +0x294
    bufio.(*Reader).Peek(0xc000092840, 0x4)
        C:/Program Files/Go/src/bufio/bufio.go:139 +0x178
    net/http.(*conn).serve(0xc000071180, {0x19d10d8, 0xc00062ca80})
        C:/Program Files/Go/src/net/http/server.go:1954 +0x1a8c
    created by net/http.(*Server).Serve
        C:/Program Files/Go/src/net/http/server.go:3033 +0xa38

    goroutine 3530 [IO wait]:
    internal/poll.runtime_pollWait(0xc000431418, 0x72)
        C:/Program Files/Go/src/runtime/netpoll.go:229 +0x45
    internal/poll.(*pollDesc).wait(0xc0004315b8, 0x72, 0x0)
        C:/Program Files/Go/src/internal/poll/fd_poll_runtime.go:84 +0x88
    internal/poll.execIO(0xc000431418, 0x19779d8)
        C:/Program Files/Go/src/internal/poll/fd_windows.go:175 +0x2d0
    internal/poll.(*FD).Read(0xc000431400, {0xc00080f000, 0x1000, 0x1000})
        C:/Program Files/Go/src/internal/poll/fd_windows.go:441 +0x49a
    net.(*netFD).Read(0xc000431400, {0xc00080f000, 0x1000, 0x1000})
        C:/Program Files/Go/src/net/fd_posix.go:56 +0x73
    net.(*conn).Read(0xc000872360, {0xc00080f000, 0x1000, 0x1000})
        C:/Program Files/Go/src/net/net.go:183 +0xa9
    net/http.(*connReader).Read(0xc00086d9b0, {0xc00080f000, 0x1000, 0x1000})
        C:/Program Files/Go/src/net/http/server.go:780 +0x22c
    bufio.(*Reader).fill(0xc0003549c0)
        C:/Program Files/Go/src/bufio/bufio.go:101 +0x294
    bufio.(*Reader).Peek(0xc0003549c0, 0x4)
        C:/Program Files/Go/src/bufio/bufio.go:139 +0x178
    net/http.(*conn).serve(0xc0003866e0, {0x19d10d8, 0xc000120740})
        C:/Program Files/Go/src/net/http/server.go:1954 +0x1a8c
    created by net/http.(*Server).Serve
        C:/Program Files/Go/src/net/http/server.go:3033 +0xa38

    goroutine 3554 [IO wait]:
    internal/poll.runtime_pollWait(0xc0007cc018, 0x72)
        C:/Program Files/Go/src/runtime/netpoll.go:229 +0x45
    internal/poll.(*pollDesc).wait(0xc0007cc1b8, 0x72, 0x0)
        C:/Program Files/Go/src/internal/poll/fd_poll_runtime.go:84 +0x88
    internal/poll.execIO(0xc0007cc018, 0x19779d8)
        C:/Program Files/Go/src/internal/poll/fd_windows.go:175 +0x2d0
    internal/poll.(*FD).Read(0xc0007cc000, {0xc0004f4000, 0x1000, 0x1000})
        C:/Program Files/Go/src/internal/poll/fd_windows.go:441 +0x49a
    net.(*netFD).Read(0xc0007cc000, {0xc0004f4000, 0x1000, 0x1000})
        C:/Program Files/Go/src/net/fd_posix.go:56 +0x73
    net.(*conn).Read(0xc0000a6010, {0xc0004f4000, 0x1000, 0x1000})
        C:/Program Files/Go/src/net/net.go:183 +0xa9
    net/http.(*connReader).Read(0xc000b893b0, {0xc0004f4000, 0x1000, 0x1000})
        C:/Program Files/Go/src/net/http/server.go:780 +0x22c
    bufio.(*Reader).fill(0xc000116540)
        C:/Program Files/Go/src/bufio/bufio.go:101 +0x294
    bufio.(*Reader).Peek(0xc000116540, 0x4)
        C:/Program Files/Go/src/bufio/bufio.go:139 +0x178
    net/http.(*conn).serve(0xc0007d0000, {0x19d10d8, 0xc000036900})
        C:/Program Files/Go/src/net/http/server.go:1954 +0x1a8c
    created by net/http.(*Server).Serve
        C:/Program Files/Go/src/net/http/server.go:3033 +0xa38

    goroutine 3555 [IO wait]:
    internal/poll.runtime_pollWait(0xc0007cc298, 0x72)
        C:/Program Files/Go/src/runtime/netpoll.go:229 +0x45
    internal/poll.(*pollDesc).wait(0xc0007cc438, 0x72, 0x0)
        C:/Program Files/Go/src/internal/poll/fd_poll_runtime.go:84 +0x88
    internal/poll.execIO(0xc0007cc298, 0x19779d8)
        C:/Program Files/Go/src/internal/poll/fd_windows.go:175 +0x2d0
    internal/poll.(*FD).Read(0xc0007cc280, {0xc000378000, 0x1000, 0x1000})
        C:/Program Files/Go/src/internal/poll/fd_windows.go:441 +0x49a
    net.(*netFD).Read(0xc0007cc280, {0xc000378000, 0x1000, 0x1000})
        C:/Program Files/Go/src/net/fd_posix.go:56 +0x73
    net.(*conn).Read(0xc0000a6018, {0xc000378000, 0x1000, 0x1000})
        C:/Program Files/Go/src/net/net.go:183 +0xa9
    net/http.(*connReader).Read(0xc000294450, {0xc000378000, 0x1000, 0x1000})
        C:/Program Files/Go/src/net/http/server.go:780 +0x22c
    bufio.(*Reader).fill(0xc000116900)
        C:/Program Files/Go/src/bufio/bufio.go:101 +0x294
    bufio.(*Reader).Peek(0xc000116900, 0x4)
        C:/Program Files/Go/src/bufio/bufio.go:139 +0x178
    net/http.(*conn).serve(0xc0007d00a0, {0x19d10d8, 0xc0003e09c0})
        C:/Program Files/Go/src/net/http/server.go:1954 +0x1a8c
    created by net/http.(*Server).Serve
        C:/Program Files/Go/src/net/http/server.go:3033 +0xa38
    rax     0x2125bcb1da0
    rbx     0x25c
    rcx     0x42
    rdi     0x1faebf9000
    rsi     0xc0000f38a0
    rbp     0xc0000f3848
    rsp     0x1faf7ff6a0
    r8      0x42
    r9      0x350
    r10     0x2125bcb1db0
    r11     0x80
    r12     0xc0000f37d0
    r13     0x0
    r14     0xc000085040
    r15     0x20
    rip     0x7ffe209f0c7a
    rflags  0x204
    cs      0x33
    fs      0x53
    gs      0x2b
    Process 12080 has exited with status 0
    Detaching
    dlv dap (17104) exited with code: 0


    go版本1.15

    gf版本2.0

    会是数据库连接引起的吗?