{"id":28621617,"url":"https://github.com/ibarryyan/golang-tips-100","last_synced_at":"2026-01-14T23:41:24.573Z","repository":{"id":172150973,"uuid":"648690783","full_name":"ibarryyan/golang-tips-100","owner":"ibarryyan","description":"You know , for golang tips!","archived":false,"fork":false,"pushed_at":"2026-01-13T12:16:40.000Z","size":3028,"stargazers_count":141,"open_issues_count":0,"forks_count":14,"subscribers_count":3,"default_branch":"master","last_synced_at":"2026-01-13T15:26:24.805Z","etag":null,"topics":["code","go","golang","golang-library","http","programming","programming-language","rpc","tips"],"latest_commit_sha":null,"homepage":"https://github.com/ibarryyan/golang-tips-100/blob/master/img/wechat.jpg","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ibarryyan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-06-02T15:04:08.000Z","updated_at":"2026-01-13T12:16:44.000Z","dependencies_parsed_at":"2024-05-19T15:44:56.293Z","dependency_job_id":null,"html_url":"https://github.com/ibarryyan/golang-tips-100","commit_stats":null,"previous_names":["ibarryyan/golang-tips-100"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ibarryyan/golang-tips-100","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibarryyan%2Fgolang-tips-100","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibarryyan%2Fgolang-tips-100/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibarryyan%2Fgolang-tips-100/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibarryyan%2Fgolang-tips-100/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ibarryyan","download_url":"https://codeload.github.com/ibarryyan/golang-tips-100/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibarryyan%2Fgolang-tips-100/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28439512,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T22:37:52.437Z","status":"ssl_error","status_checked_at":"2026-01-14T22:37:31.496Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["code","go","golang","golang-library","http","programming","programming-language","rpc","tips"],"created_at":"2025-06-12T05:01:55.225Z","updated_at":"2026-01-14T23:41:24.562Z","avatar_url":"https://github.com/ibarryyan.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"## 《Go小技巧\u0026易错点100例》\n\n\u003ca href=\"https://github.com/ibarryyan/golang-tips-100/blob/master/img/wechat.jpg\"\u003e\u003cimg src=\"https://img.shields.io/badge/%E5%85%AC%E4%BC%97%E5%8F%B7-%E6%89%AF%E7%BC%96%E7%A8%8B%E7%9A%84%E6%B7%A1-blue\" alt=\"公众号\"\u003e\u003c/a\u003e\n[![](https://img.shields.io/github/watchers/ibarryyan/golang-tips-100.svg?style=flat)](https://github.com/ibarryyan/golang-tips-100/watchers)\n[![](https://img.shields.io/github/stars/ibarryyan/golang-tips-100.svg?style=flat)](https://github.com/ibarryyan/golang-tips-100/stargazers)\n\n![image-20231112185924824](img/logo.png)\n\n**《Go小技巧\u0026易错点100例》** 博客专栏，主要是总结一下自己Coding过程中遇到的问题以及平时读一些博客的所得，因为做Gopher也有了一段时间了，相比Java，有些问题想要利用搜索引擎排查出来可能不是那么的迅速，所以在这里以文章的形式总结出来，也方便各位Gopher们能够顺利的解决所遇到的问题，并能够习得一些小技巧。\n\n#### 专栏目录\n\n| Golang Tips                                               | Go基础知识                                 | Go框架技术                        | Go项目实践                                | Go优化实践                             |\n| --------------------------------------------------------- | -------------------------------------- | ----------------------------- | ------------------------------------- | ---------------------------------- |\n| `专栏的主要内容，主要是收集和总结Go开发中常见的小技巧和易错点，内容短小精炼，每篇文章大概会提供1~4个知识点` | `Go语言的基础知识，包括语法、原理等等，主要是全篇围绕一个知识点进行讲解` | `Go语言与常见框架的整合使用，提供基本的整合和使用方式` | `一些作者自己的小项目，主要是用Go语言进行开发，按照自己的想法进行实现` | `Go项目中常见的优化实践，包括编码的优化、排查问题工具的使用等等` |\n| [专栏大纲](#专栏大纲)                                             | [Go基础知识](#Go基础知识)                      | [Go框架技术](#Go框架技术)             | [Go项目实践](#Go项目实践)                     | [Go优化实践](#Go优化实践)                  |\n\n---\n\n**Go语言最新排名**：[TIOBE](https://www.tiobe.com/tiobe-index/go/)\n\n\u003c!-- \u003cdiv align=\"center\"\u003e\n   \u003cimg src=\"img/tiobe202509.png\" width=\"500\"  alt=\"\" /\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n   \u003cimg src=\"img/rate.png\" width=\"500\"  alt=\"\" /\u003e\n\u003c/div\u003e --\u003e\n\n**AI时代Go语言学习路线：**[博客链接](https://mp.weixin.qq.com/s/5x24Nhbxtjkcjv7xuJWPng)\n\n\u003c!-- \u003cdiv align=\"center\"\u003e\n   \u003cimg src=\"img/way.png\" width=\"800\"  alt=\"\" /\u003e\n\u003c/div\u003e --\u003e\n\n**相关学习资源：**\n\n- [Learning-golang-2024](https://www.bytesizego.com/blog/learning-golang-2024)\n\n### Golang Tips 100\n\n#### 专栏大纲\n\n![image-20231112190005980](img/main-34end.png)\n\n\u003e **在线地址（更新到第30篇）**：[Go小技巧\u0026易错点100例专栏](https://www.processon.com/view/link/66913a1de7d7970dad42d812)\n\n#### 订阅地址\n\n**CSDN**：[《Go语言小技巧\u0026易错点100例》](https://blog.csdn.net/mr_yanmingxin/category_12232577.html)\n\n**微信公众号**：[Go小技巧\u0026易错点100例](https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum\u0026album_id=3180454570016030721)\n\n**扫码订阅**：\n\n![image-20231112190005980](img/link.png)\n\n#### 更新进度\n\n| 标题                                                                                                                                                                                                        | 代码                                                                            | 关键词                                                                                                                                         | 数量  | 难度  |\n| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | --- | --- |\n| [开篇词](https://mp.weixin.qq.com/s/p4FEiaaxXn8JDEh0AfaAfA)                                                                                                                                                  | -                                                                             |                                                                                                                                             | 0   | ⭐   |\n| [第一篇](https://mp.weixin.qq.com/s/2suBNq6RFN1INarY5pTkpA)                                                                                                                                                  | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_01) | 1.函数返回值屏蔽\u003cbr/\u003e2.context继承特性\u003cbr/\u003e3.禁止main函数退出\u003cbr/\u003e4.map值的遍历次序函数\u003cbr/\u003e`关键词：context、map`                                                        | 4   | ⭐   |\n| [第二篇](https://mp.weixin.qq.com/s?__biz=MzIxNDc2ODc3MA==\u0026mid=2247485221\u0026idx=1\u0026sn=35ba81fd1b3d7d029e071c2f40cfb083\u0026chksm=97a3cac8a0d443dee4cf3615017f1ff970ad4a620db0d8a8393bc2df6c228e7361995d72fea4#rd)   | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_02) | 5.fallthrough关键字\u003cbr/\u003e6.简式变量声明仅能在函数内部使用\u003cbr/\u003e7.防止main函数提前退出\u003cbr/\u003e8.包循环依赖错误fallthrough\u003cbr/\u003e`关键词：变量声明、函数、包依赖`                                    | 4   | ⭐⭐⭐ |\n| [第三篇](https://mp.weixin.qq.com/s?__biz=MzIxNDc2ODc3MA==\u0026mid=2247485371\u0026idx=1\u0026sn=c0d43c4d50cb3fd198c1617742beeaa1\u0026chksm=97a3ca56a0d44340e46742b2378e5c6ebcb32ce2edc0b8266a7356f92989c6cd2d5418e38db4#rd)   | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_03) | 9.Go项目中对依赖库版本的升级与降级\u003cbr/\u003e10.goroutine异常\u003cbr/\u003e11.Go中slice作为参数是值传递\u003cbr/\u003e`关键词：goroutine、slice`                                                    | 3   | ⭐   |\n| [第四篇](https://mp.weixin.qq.com/s/8irznbZxQ1tiDCyzsJJDUQ)                                                                                                                                                  | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_04) | 12.Go omitempty关键字\u003cbr/\u003e13.JSON Marshal需要注意的问题\u003cbr/\u003e14.Go iota关键字\u003cbr/\u003e`关键词：omitempty、json、iota`                                               | 3   | ⭐   |\n| [第五篇](https://mp.weixin.qq.com/s?__biz=MzIxNDc2ODc3MA==\u0026mid=2247485391\u0026idx=1\u0026sn=034608e1cc1351436ff22cb0b5ebc45b\u0026chksm=97a3ca22a0d44334b2b1f82ea81411ff1335b352f7ad35f8179ff3f0a7cf17b2175af007b67f#rd)   | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_05) | 15.goroutine控制并发数量的方式\u003cbr/\u003e16.Go发起HTTP请求\u003cbr/\u003e17.断言\u003cbr/\u003e`关键词：goroutine、HTTP、断言`                                                               | 3   | ⭐⭐  |\n| [第六篇](https://mp.weixin.qq.com/s?__biz=MzIxNDc2ODc3MA==\u0026mid=2247485413\u0026idx=1\u0026sn=c6520ac6911c598f86877c4155185f35\u0026chksm=97a3ca08a0d4431e4d1c0135cc9ee951213222c155847794338f74d5126a6278ac1659f716eb#rd)   | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_06) | 18.pprof查看运行时状态信息\u003cbr/\u003e19.goruntine使用后的销毁\u003cbr/\u003e`关键词：pprof、goruntine`                                                                          | 2   | ⭐⭐⭐ |\n| [第七篇](https://mp.weixin.qq.com/s?__biz=MzIxNDc2ODc3MA==\u0026mid=2247485446\u0026idx=1\u0026sn=ac2669c690efc4373f81515160269e70\u0026chksm=97a3c5eba0d44cfdfd8238af5682220cfd979b4ae7fae10121ebe53c122a3b8d1abf7385168c#rd)   | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_07) | 20.Go日志输出到文件\u003cbr/\u003e21.recover方式的异常处理\u003cbr/\u003e22.Go HTTP请求重定向\u003cbr/\u003e`关键词：日志、HTTP、异常处理`                                                               | 3   | ⭐⭐  |\n| [第八篇](https://mp.weixin.qq.com/s?__biz=MzIxNDc2ODc3MA==\u0026mid=2247485558\u0026idx=1\u0026sn=b19a67e3a47d7098219d9aacdeb2e6ab\u0026chksm=97a3c59ba0d44c8d51e763d63d1469deab5d5ce511d19b5efaa4a576bce77e5d8326129b371e#rd)   | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_08) | 23.优雅的关闭Go程序\u003cbr/\u003e24.指针声明后未赋值前不能直接操作\u003cbr/\u003e25.channel方式代替time.Sleep\u003cbr/\u003e`关键词：指针、channel`                                                       | 3   | ⭐⭐  |\n| [第九篇](https://mp.weixin.qq.com/s?__biz=MzIxNDc2ODc3MA==\u0026mid=2247485574\u0026idx=1\u0026sn=66a307a7b05e9a6784613a1891ecb736\u0026chksm=97a3c56ba0d44c7d747ff0a28cd647f99aee835953b617c48448ba89da3a50a087c1edcea8c8#rd)   | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_09) | 26.遍历指针数组 [该问题在Go1.22版本已修复]\u003cbr/\u003e27.检查nil以提升程序安全性和健壮性\u003cbr/\u003e`关键词：指针、数组`                                                                                          | 2   | ⭐   |\n| [第十篇](https://mp.weixin.qq.com/s?__biz=MzIxNDc2ODc3MA==\u0026mid=2247485598\u0026idx=1\u0026sn=4eb0ad69d6031aa83a20f8d6d9c1b534\u0026chksm=97a3c573a0d44c656213ba1109dc34e4e4bb1f112055ffd7b048dc89a9454ccfc4bb4059d56b#rd)   | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_10) | 28.Go string的长度\u003cbr/\u003e29.Go优雅的Test方法\u003cbr/\u003e30.slice的各种截取\u003cbr/\u003e`关键词：string、go Test、slice`                                                         | 3   | ⭐   |\n| [第十一篇](https://mp.weixin.qq.com/s?__biz=MzIxNDc2ODc3MA==\u0026mid=2247485631\u0026idx=1\u0026sn=947fcd1308b469ab6a91ebba36e8dfc1\u0026chksm=97a3c552a0d44c44ce63df8a55402c55711e073682b428d209e21fe401a4fe4301f1b79fc9bc#rd)  | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_11) | 31.Go函数式编程\u003cbr/\u003e32.不建议map使用指针类型作为Key\u003cbr/\u003e33.直接使用值为nil的slice和map\u003cbr/\u003e`关键词：函数式编程、map、slice`                                                    | 3   | ⭐⭐  |\n| [第十二篇](https://mp.weixin.qq.com/s?__biz=MzIxNDc2ODc3MA==\u0026mid=2247485864\u0026idx=1\u0026sn=ed7b74e37eff86624d38ec018426e6e8\u0026chksm=97a3c445a0d44d532a8863cadc65d3c636974dc9c2eee76692ac189a36e52d5aa64abab68e27#rd)  | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_12) | 34.Go库函数和Protobuf函数在JSON序列化Message类型结构体上的不同\u003cbr/\u003e35.Go HTTP全局异常处理器\u003cbr/\u003e`关键词：HTTP、JSON序列化`                                                    | 2   | ⭐   |\n| [第十三篇](https://mp.weixin.qq.com/s?__biz=MzIxNDc2ODc3MA==\u0026mid=2247486035\u0026idx=1\u0026sn=fc5570fb9cd3726cbca24330135c3f90\u0026chksm=97a3c7bea0d44ea86884de45f9b08a0d3702d6a3b8f47db80200cdd000b623771233e1a7dda1#rd)  | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_13) | 36.Go HTTP文件上传下载\u003cbr/\u003e37.Go程序弹出浏览器\u003cbr/\u003e`关键词：HTTP`                                                                                            | 2   | ⭐   |\n| [第十四篇](https://mp.weixin.qq.com/s?__biz=MzIxNDc2ODc3MA==\u0026mid=2247486075\u0026idx=1\u0026sn=47ca00c91c513dfcbfeceb6712c87d6a\u0026chksm=97a3c796a0d44e80c1961cd90572e3c4a8b34db33b3022c873fcee3e73ddc4cdd8682e4b4f0f#rd)  | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_14) | 38.init()函数的执行机制\u003cbr/\u003e39.sync.Once同步原语\u003cbr/\u003e40.Go进行保留小数的运算\u003cbr/\u003e`关键词：init函数、并发`                                                                | 3   | ⭐⭐⭐ |\n| [第十五篇](https://mp.weixin.qq.com/s?__biz=MzIxNDc2ODc3MA==\u0026mid=2247486091\u0026idx=1\u0026sn=d54ef1b75d10e73a7a5d8e6c6462315b\u0026chksm=97a3c766a0d44e708d89b2e98b6c785fddad3f333711eace422f69e97dfda0025ef4420cff8d#rd)  | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_15) | 41.Go程序跟踪函数的执行时间\u003cbr/\u003e42.Go链式编程\u003cbr/\u003e43.结构体值接收者和指针接收者实现接口的区别\u003cbr/\u003e`关键词：链式编程`                                                                   | 3   | ⭐⭐  |\n| [第十六篇](https://mp.weixin.qq.com/s?__biz=MzIxNDc2ODc3MA==\u0026mid=2247486178\u0026idx=1\u0026sn=42542503036027f2d59a8b4d0e0ef81e\u0026chksm=97a3c70fa0d44e19415182b85579717790ddb7880376cb106e038f8c36896371649bc80f7a11#rd)  | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_16) | 44.切片的长度和容量\u003cbr/\u003e45.for循环中使用defer\u003cbr/\u003e46.Go语言TrimLeft函数\u003cbr/\u003e`关键词：slice、defer`                                                                | 3   | ⭐   |\n| [第十七篇](https://mp.weixin.qq.com/s?__biz=MzIxNDc2ODc3MA==\u0026mid=2247486758\u0026idx=1\u0026sn=e430a3f037aa926acfad8037d28434b2\u0026chksm=97a3c0cba0d449dd6bd626a5707f32fe2a3f6e8652ccb2b8db49539389a7208da115c6b51571#rd)  | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_17) | 47.Go定时任务\u003cbr/\u003e48.Cgo简单使用\u003cbr/\u003e`关键词：Cgo、定时任务`                                                                                                 | 2   | ⭐⭐  |\n| [第十八篇](https://mp.weixin.qq.com/s?__biz=MzIxNDc2ODc3MA==\u0026mid=2247487042\u0026idx=1\u0026sn=4811102b28eae8c8c9c88ac2e86ba97d\u0026chksm=97a3c3afa0d44ab96b57a435a49c473afb867b83d125c4662fe8f808548b0d3cc96eaf6e46eb#rd)  | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_18) | 49.使用下划线增加数字可读性\u003cbr/\u003e50.格式化方法中多次使用相同参数\u003cbr/\u003e51.数组的模糊计数\u003cbr/\u003e`关键词：fmt`                                                                          | 3   | ⭐   |\n| [第十九篇](https://mp.weixin.qq.com/s?__biz=MzIxNDc2ODc3MA==\u0026mid=2247487204\u0026idx=1\u0026sn=7bf189222e5ccb10b89d7da50de10714\u0026chksm=97a3c309a0d44a1fb1212ae0aadbf2288d0bdc475cfa25c9db65e4589b5fc8b208fdf60f0e02#rd)  | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_19) | 52.goto语法和label的使用\u003cbr/\u003e`关键词：goto`                                                                                                           | 1   | ⭐⭐⭐ |\n| [第二十篇](https://mp.weixin.qq.com/s/X02cUHcv8MtBfMYWrmuoqw)                                                                                                                                                 | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_20) | 53.使用slice和map的内置函数\u003cbr/\u003e54.避免不必要的类型转换\u003cbr/\u003e55.优雅的字符串拼接方式\u003cbr/\u003e`关键词：slice、map、类型转换、字符串拼接`                                                      | 3   | ⭐⭐  |\n| [第二十一篇](https://mp.weixin.qq.com/s?__biz=MzIxNDc2ODc3MA==\u0026mid=2247487559\u0026idx=1\u0026sn=de4eab08828a71e7d0344b63759eaf21\u0026chksm=97a3ddaaa0d454bcc2088faa1473be59d6d7ce57b9d27659b33f1b454d73cb9e3e4c795e7cad#rd) | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_21) | 56.errors.Is方法与==两种方式进行error比较\u003cbr/\u003e57.带缓冲channel和无缓冲channel区别\u003cbr/\u003e58.defer func() 函数返回值\u003cbr/\u003e`关键词：defer、channel`                             | 3   | ⭐⭐  |\n| [第二十二篇](https://mp.weixin.qq.com/s/aGMyTg7HAstfrG5O9h_xjA)                                                                                                                                                | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_22) | 59.Go有符号类型和无符号类型\u003cbr/\u003e60.Go数组和切片\u003cbr/\u003e61.Go结构体类型比较\u003cbr/\u003e`关键词：变量类型`                                                                             | 3   | ⭐   |\n| [第二十三篇](https://mp.weixin.qq.com/s?__biz=MzIxNDc2ODc3MA==\u0026mid=2247487736\u0026idx=1\u0026sn=b183069cbca46cffcbdcfce7b8cc6565\u0026chksm=97a3dd15a0d454036e9dad64c82e323c3d24d87eb0c57b75b62c862838ca57c615207c053500#rd) | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_23) | 62.Go Module控制Go版本\u003cbr/\u003e63.int转string注意事项\u003cbr/\u003e64.Go项目查看mod依赖关系\u003cbr/\u003e`关键词：go module`关键词：                                                       | 3   | ⭐⭐  |\n| [第二十四篇](https://mp.weixin.qq.com/s/nUefNaAmi6bEAselB9QJmg)                                                                                                                                                | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_24) | 65.go interface{}类型校验\u003cbr/\u003e66.go mod tidy验签失败\u003cbr/\u003e`关键词：interface`                                                                            | 3   | ⭐   |\n| [第二十五篇](https://mp.weixin.qq.com/s/noB16PTbMmykmQKda43FPA)                                                                                                                                                | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_25) | 67.使用atomic包实现无锁并发控制\u003cbr/\u003e68.Gin框架的中间件机制\u003cbr/\u003e69.搞懂nil切片和空切片\u003cbr\u003e`关键词：Gin、slice、并发`                                                            | 2   | ⭐⭐  |\n| [第二十六篇](https://mp.weixin.qq.com/s/7rA1nPan70Du3vQlEGrG8g)                                                                                                                                                | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_26) | 70.string转[]byte是否会发生内存拷贝\u003cbr/\u003e71.Go程序获取文件的哈希值\u003cbr/\u003e`关键词：string、文件哈希值`                                                                        | 2   | ⭐   |\n| [第二十七篇](https://mp.weixin.qq.com/s/59i5_CmzVr19U32t2Ht2_Q)                                                                                                                                                | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_27) | 72.Go语言中的Scan函数\u003cbr/\u003e73.debug.Stack()打印堆栈信息\u003cbr/\u003e74.Go条件编译\u003cbr/\u003e`关键词：Scan函数、debug.Stack()、条件编译`                                                | 3   | ⭐⭐⭐ |\n| [第二十八篇](https://mp.weixin.qq.com/s/9zdsKi44uHXZ0HPSuJW9Ww)                                                                                                                                                | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_28) | 75.runtime.Caller(1)获取调用者信息\u003cbr/\u003e76.for循环 + select{}语法\u003cbr/\u003e`关键词：函数调用栈、select{}`                                                              | 2   | ⭐⭐⭐ |\n| [第二十九篇](https://mp.weixin.qq.com/s/cgjk4zxBeTLUbgL3n2yJqA)                                                                                                                                                | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_29) | 77.可变类型比较\u003cbr/\u003e78.Slice 最大值与最小值\u003cbr/\u003e79.Map 转换为 Slice\u003cbr/\u003e80.Map 合并\u003cbr/\u003e`关键词：新版内置函数`                                                          | 3   | ⭐⭐  |\n| [第三十篇](https://mp.weixin.qq.com/s/gpDDtAd_1lXmCMpXMqgNyw)                                                                                                                                                 | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_30) | 81.切片共享底层数组\u003cbr/\u003e82.获取Go函数的注释\u003cbr/\u003e`关键词：抽象语法树、slice`                                                                                          | 2   | ⭐⭐⭐ |\n| [第三十一篇](https://mp.weixin.qq.com/s/SaQcPRgtpXOzkCrLZDtF1g)                                                                                                                                                | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_31) | 83.Go struct内存对齐\u003cbr/\u003e84.使用空结构体(struct{})节省内存\u003cbr/\u003e`关键词：内存对齐、空struct{}`                                                                       | 2   | ⭐⭐⭐ |\n| [第三十二篇](https://mp.weixin.qq.com/s/ntn-m66mOODPUFnq9LRoiQ)                                                                                                                                                | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_32) | 85.sync.Map的原理和使用方式\u003cbr/\u003e86.实现有序的Map\u003cbr/\u003e`关键词：map`                                                                                           | 2   | ⭐⭐⭐ |\n| [第三十三篇](https://mp.weixin.qq.com/s/4pDo0jomeF6GQPOx238EBA)                                                                                                                                                | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_33) | 87.Validator自定义校验规则\u003cbr/\u003e88.sync.Pool优化对象复用\u003cbr/\u003e89.sync.WaitGroup的正确使用\u003cbr/\u003e90.nil的语义陷阱\u003cbr/\u003e`关键词：Validator、sync.Pool、sync.WaitGroup、nil的语义陷阱` | 4   | ⭐⭐⭐ |\n| [第三十四篇](https://mp.weixin.qq.com/s/M_DXP-nwvekq-0mxo2G-yA)                                                                                                                                                | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_34) | 91.sync.Mutex锁复制导致的异常 \u003cbr/\u003e92.Go堆栈机制下容易导致的并发问题  \u003cbr/\u003e`关键词：sync.Mutex、锁复制、堆栈、goroutine`                                                      | 2   | ⭐⭐⭐ |\n| [第三十五篇](https://mp.weixin.qq.com/s/6RABbLbpgwHq6gRIiI3Xxw)                                                                                                                                                | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_35) | 93.循环依赖导致栈溢出 \u003cbr/\u003e94.无法捕获子协程的panic  \u003cbr/\u003e`关键词：循环依赖、堆栈、goroutine、panic`                                                                      | 2   | ⭐⭐⭐ |\n| [第三十六篇](https://mp.weixin.qq.com/s/iDmztgNcQGbBKDRhqN90hA)                                                                                                                                                | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_36) | 95.使用gops获取正在运行的Go进程 \u003cbr/\u003e96.将静态文件编译到Go程序中  \u003cbr/\u003e 97.Go语言通过多重赋值实现变量值交换  \u003cbr/\u003e`关键词：gops工具、变量交换、编译`                                           | 3   | ⭐⭐  |\n| [第三十七篇](https://mp.weixin.qq.com/s/EA7wUi65WjUMas75MocpjA)                                                                                                                                                | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_37) | 98.Go结构体非导出字段不会被序列化 \u003cbr/\u003e99.Go语言的字符串是不可变  \u003cbr/\u003e 100.代码块{}的作用范围  \u003cbr/\u003e`关键词：序列化、字符串、代码块`                                                      | 3   | ⭐⭐  |\n\n100+\n\n\n| 标题                                                         | 代码                                                                            | 关键词                                                                                                                                                                                     | 数量 | 难度  |\n|------------------------------------------------------------|-------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----| --- |\n| [第三十八篇](https://mp.weixin.qq.com/s/h_wqQn-fbrlAkGEomI_VCA) | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_38) | 101.new和make的区别 \u003cbr/\u003e102.Go语言的string和byte  \u003cbr/\u003e`关键词：make、new、string、byte`                                                                                                              | 2  | ⭐⭐  |\n| [第三十九篇](https://mp.weixin.qq.com/s/dMmARoyPQCiZLzqnLHSseA) | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_39) | 103.context的超时控制是如何实现的？ \u003cbr/\u003e104.slice不是并发安全的  \u003cbr/\u003e105.Go语言中的CAS  \u003cbr/\u003e`关键词：context、slice、cas`                                                                                         | 3  | ⭐⭐⭐  |\n| [第四十篇](https://mp.weixin.qq.com/s/lNdgFov23DrG5J-82sE71Q)  | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_40) | 106.子协程panic的后果与解决方案 \u003cbr/\u003e107.Go语言中map解决哈希冲突的机制 \u003cbr/\u003e`关键词：子协程、map`                                                                                                                      | 2  | ⭐⭐  |\n| [第四十一篇](https://mp.weixin.qq.com/s/0WiTpXaOkkPNlpMcn3hxFQ) | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_41) | 108.Go语言的空值 \u003cbr/\u003e109.flag包使用过程中需要注意的问题 \u003cbr/\u003e`关键词：空值、flag`                                                                                                                               | 2  | ⭐⭐⭐  |\n| [第四十二篇](https://mp.weixin.qq.com/s/Mms6laMLRWGaKgVqshfJoQ) | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_42) | 110.Go语言进行sha256加密 \u003cbr/\u003e111.JSON解析时int溢出问题 \u003cbr/\u003e112.time.After的内存泄漏 \u003cbr/\u003e`关键词：加密、内存`                                                                                                    | 3  | ⭐⭐⭐  |\n| [第四十三篇](https://mp.weixin.qq.com/s/_n5Tgz7KHmixpwyngB7hew) | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_43) | 113.select和for循环的死锁问题 \u003cbr/\u003e114.defer改变函数返回值 \u003cbr/\u003e115.如何优雅地停止 goroutine \u003cbr/\u003e`关键词：select、defer、goroutine`                                                                                | 3  | ⭐⭐⭐  |\n| [第四十四篇](https://mp.weixin.qq.com/s/xPQT_uXb_piPY3vRZhtidw) | [code](https://github.com/ibarryyan/golang-tips-100/tree/master/code/code_44) | 116.死锁问题：写入缓冲区满了，读取方无法读取 \u003cbr/\u003e117.错误地不关闭 Channel，导致接收方无法判断何时停止 \u003cbr/\u003e118.错误地在接收端关闭 Channel，导致 panic \u003cbr/\u003e119.读取已关闭的 Channel 时处理不当 \u003cbr/\u003e120.向已关闭的 Channel 写入数据导致 panic \u003cbr/\u003e`关键词：channel` | 5  | ⭐⭐⭐  |\n| DOING                                                      |                                                                               |                                                                                                                                                                                         |    |     |\n\n\nTotal：120\n\n#### 同类内容分享\n\n[Go语言100个编程错误小抄](https://colobu.com/2023/07/18/cheatsheet-of-100-go-mistakes/)\n\n[Go语言编程技巧](https://github.com/smallnest/gotips)\n\n[Go语言编程技巧（网页版）](https://colobu.com/gotips/)\n\n[Go优化指南](https://github.com/astavonin/go-optimization-guide)\n\n[Go优化指南（网页版）](https://goperf.dev/)\n\n[Golang Weekly](https://golangweekly.com/)\n\n---\n\n### Go基础知识\n\n| 文章                                                                                                                                                                                                                 | 关键词                   | 难度 |\n| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |-----------------------| -- |\n| [浅谈Go语言内存模型](https://mp.weixin.qq.com/s?__biz=MzIxNDc2ODc3MA==\u0026mid=2247486736\u0026idx=1\u0026sn=963f0ae34cbd2a10d66670e387654a81\u0026chksm=97a3c0fda0d449eb4b850f60b444150c5d90d4111ad87b8301d89720a7a33f5ef99b915f4057#rd)     | Go内存模型、goroutine      | ⭐⭐ |\n| [Go错误处理方式真的不好吗？](https://mp.weixin.qq.com/s?__biz=MzIxNDc2ODc3MA==\u0026mid=2247485136\u0026idx=1\u0026sn=e27084c6d00697ef35e20922e3aaec02\u0026chksm=97a3cb3da0d4422b30bfef8a0f0502e60a1b6f54270d27da7602323bf18798e9ba68db8fd4c2#rd) | 错误处理                  | ⭐⭐ |\n| [莫非这就是Go最佳协程池](https://mp.weixin.qq.com/s?__biz=MzIxNDc2ODc3MA==\u0026mid=2247487266\u0026idx=1\u0026sn=fcdf02e4962ff1398a721ef3208a75e9\u0026chksm=97a3c2cfa0d44bd9e9be7e426ef3f029e655e656468515123739849c5137c2d79b9c0dd4838b#rd)   | goroutine、池化思想        | ⭐⭐ |\n| [原来go build命令有这么多学问](https://mp.weixin.qq.com/s/GiT6S-TSouTLZVBkftswuQ)                                                                                                                                            | 编译原理                  | ⭐⭐ |\n| [Go程序最多能创建多少个协程？](https://mp.weixin.qq.com/s/4c_6R4AEpg-9O_yrG1eyTg)                                                                                                                                               | goroutine的销毁、线程、内存、协程 | ⭐⭐⭐ |\n| [搞懂Go泛型，看这一篇就够了](https://mp.weixin.qq.com/s/ASF7WcMstmc_681heK1nfQ)                                                                                                                                                | 泛型                    | ⭐⭐ |\n| [搞懂策略模式和模板方法模式](https://mp.weixin.qq.com/s/8P_-KFSJvNtnkNSTx3DgAQ)                                                                                                                                                 | 策略模式、模板方法模式           | ⭐  |\n| [浅谈Go语言Optional模式和Builder模式](https://mp.weixin.qq.com/s/dGqaYg1TRhII6jytsfF1Vg)                                                                                                                                    | Optional模式、Builder模式  | ⭐  |\n| [函数式编程能有多优雅？](https://mp.weixin.qq.com/s/fj3G8oOBekrxx6CY371oAA)                                                                                                                                                   | 函数式编程                 | ⭐⭐ |\n| [为什么说组合优于继承？](https://mp.weixin.qq.com/s/dlR31hpNYX2KjjJ5_lrcug)                                                                                                                                                   | 面向对象                  | ⭐⭐ |\n| [浅谈Go语言深拷贝与浅拷贝](https://mp.weixin.qq.com/s/p5Nf3zltKlXA7oFw-2ToaQ)                                                                                                                                                 | 面向对象                  | ⭐⭐ |\n| [快来看！你的Go代码还能更优雅](https://mp.weixin.qq.com/s/79B0ez6eGfTwaZWvh0-JcA)                                                                                                                                               | 面向对象                  | ⭐⭐ |\n| [Go语言的Fan-In并发模式](https://mp.weixin.qq.com/s/Q55cAsyJkCA7mAJBPtUy8w)                                                                                                                                               | 并发                    | ⭐⭐ |\n| [一文搞懂Go语言垃圾回收机制](https://mp.weixin.qq.com/s/ic0i7RhLxYJ53M0e1XJBOw)                                                                                                                                                | 垃圾回收                  | ⭐⭐⭐ |\n| [Go内存逃逸分析，真的很神奇吗？](https://mp.weixin.qq.com/s/oG-z1wlDxCOrG6TJPyfm9g)                                                                                                                                              | 内存逃逸                  | ⭐⭐⭐ |\n| [Go数据类型，还有哪些你不知道的点？](https://mp.weixin.qq.com/s/c_0PO6MAalPfQsxeFF7m4g)                                                                              | 数据类型                  | ⭐⭐⭐ |\n| [Go环境变量那么多，该如何配置？](https://mp.weixin.qq.com/s/_QZhVpYG64Q4V17RDGGc8g)                                                                              | 环境安装                  | ⭐⭐ |\n| [Go语言中slice的扩容与并发安全](https://cloud.tencent.com/developer/article/2560838)                                                                              | 切片、并发                  | ⭐⭐⭐ |\n\n---\n\n### Go框架技术\n\n| 文章                                                                                                                                                                                                                   | 关键词          | 难度  |\n| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | --- |\n| [WebSocket原来还能这么玩](https://mp.weixin.qq.com/s?__biz=MzIxNDc2ODc3MA==\u0026mid=2247486120\u0026idx=1\u0026sn=7ae6a6cc6e14e588d76d3f92ef75fe0c\u0026chksm=97a3c745a0d44e53f1c5e286ef9b3b4d8e0480595f5e78b57f30ecc8dad6395573475518671f#rd) | WebSocket    | ⭐⭐  |\n| [浅谈一下etcd的Watch机制](https://mp.weixin.qq.com/s/6l6OymkNz_wxBOSsvomiZA)                                                                                                                                                | etcd、Watch机制 | ⭐⭐  |\n| [搞懂gRPC支持HTTP进行双协议通信](https://mp.weixin.qq.com/s/eqxw9WliuxwXr2GnGZDKIw)                                                                                                                                             | etcd、Watch机制 | ⭐⭐  |\n\n**Go语言与框架（工具）集成的Demo**\n\n**1）存储类**\n\n| **类别**            | **集成工具**                                                              | **Demo**                                                    | **评分** |\n| ----------------- | --------------------------------------------------------------------- | ----------------------------------------------------------- | ------ |\n| **MySQL**         | [go-sql-driver/mysql](https://github.com/go-sql-driver/mysql)         | [Demo](https://github.com/go-sql-driver/mysql#usage)        | ⭐⭐⭐⭐⭐  |\n| **PostgreSQL**    | [lib/pq](https://github.com/lib/pq)                                   | [Demo](https://github.com/lib/pq#examples)                  | ⭐⭐⭐⭐   |\n| **Redis**         | [go-redis/redis](https://github.com/go-redis/redis)                   | [Demo](https://github.com/go-redis/redis#quickstart)        | ⭐⭐⭐⭐⭐  |\n| **MongoDB**       | [mongodb/mongo-go-driver](https://github.com/mongodb/mongo-go-driver) | [Demo](https://github.com/mongodb/mongo-go-driver#usage)    | ⭐⭐⭐⭐   |\n| **Kafka**         | [segmentio/kafka-go](https://github.com/segmentio/kafka-go)           | [Demo](https://github.com/segmentio/kafka-go#examples)      | ⭐⭐⭐⭐   |\n| **Elasticsearch** | [olivere/elastic](https://github.com/olivere/elastic)                 | [Demo](https://github.com/olivere/elastic#examples)         | ⭐⭐⭐⭐   |\n| **ORM**           | [go-gorm/gorm](https://github.com/go-gorm/gorm)                       | [Demo](https://github.com/go-gorm/gorm#quick-start)         | ⭐⭐⭐⭐⭐  |\n| **文件存储**          | [minio/minio-go](https://github.com/minio/minio-go)                   | [Demo](https://github.com/minio/minio-go#quick-start)       | ⭐⭐⭐⭐   |\n| **缓存**            | [patrickmn/go-cache](https://github.com/patrickmn/go-cache)           | [Demo](https://github.com/patrickmn/go-cache#example-usage) | ⭐⭐⭐⭐   |\n| **分布式锁**          | [go-redsync/redsync](https://github.com/go-redsync/redsync)           | [Demo](https://github.com/go-redsync/redsync#usage)         | ⭐⭐⭐⭐   |\n| **对象存储**          | [aws/aws-sdk-go](https://github.com/aws/aws-sdk-go)                   | [Demo](https://github.com/aws/aws-sdk-go#usage)             | ⭐⭐⭐⭐⭐  |\n| **加密与安全**         | [golang/crypto](https://github.com/golang/crypto)                     | [Demo](https://github.com/golang/crypto#examples)           | ⭐⭐⭐⭐⭐  |\n\n**2）Web与RPC框架**\n\n| **类别**        | **集成工具**                                                  | **Demo**                                                           | **评分** |\n| ------------- | --------------------------------------------------------- | ------------------------------------------------------------------ | ------ |\n| **gRPC**      | [grpc/grpc-go](https://github.com/grpc/grpc-go)           | [Demo](https://github.com/grpc/grpc-go#examples)                   | ⭐⭐⭐⭐⭐  |\n| **Gin框架**     | [gin-gonic/gin](https://github.com/gin-gonic/gin)         | [Demo](https://github.com/gin-gonic/gin#quick-start)               | ⭐⭐⭐⭐⭐  |\n| **WebSocket** | [gorilla/websocket](https://github.com/gorilla/websocket) | [Demo](https://github.com/gorilla/websocket#examples)              | ⭐⭐⭐⭐   |\n| **HTTP客户端**   | [go-resty/resty](https://github.com/go-resty/resty)       | [Demo](https://github.com/go-resty/resty#usage)                    | ⭐⭐⭐⭐⭐  |\n| **API文档生成**   | [swaggo/swag](https://github.com/swaggo/swag)             | [Demo](https://github.com/swaggo/swag#declarative-comments-format) | ⭐⭐⭐⭐⭐  |\n| **HTTP路由**    | [gorilla/mux](https://github.com/gorilla/mux)             | [Demo](https://github.com/gorilla/mux#examples)                    | ⭐⭐⭐⭐⭐  |\n\n**3）消息类**\n\n| **类别**      | **集成工具**                                                    | **Demo**                                               | **评分** |\n| ----------- | ----------------------------------------------------------- | ------------------------------------------------------ | ------ |\n| **Kafka**   | [segmentio/kafka-go](https://github.com/segmentio/kafka-go) | [Demo](https://github.com/segmentio/kafka-go#examples) | ⭐⭐⭐⭐   |\n| **Logging** | [sirupsen/logrus](https://github.com/sirupsen/logrus)       | [Demo](https://github.com/sirupsen/logrus#example)     | ⭐⭐⭐⭐⭐  |\n| **消息队列**    | [nsqio/go-nsq](https://github.com/nsqio/go-nsq)             | [Demo](https://github.com/nsqio/go-nsq#usage)          | ⭐⭐⭐⭐   |\n\n**4）其他**\n\n| **类别**            | **集成工具**                                                                    | **Demo**                                                                 | **评分** |\n| ----------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------ | ------ |\n| **Elasticsearch** | [olivere/elastic](https://github.com/olivere/elastic)                       | [Demo](https://github.com/olivere/elastic#examples)                      | ⭐⭐⭐⭐   |\n| **Prometheus**    | [prometheus/client_golang](https://github.com/prometheus/client_golang)     | [Demo](https://github.com/prometheus/client_golang#instrumenting-a-code) | ⭐⭐⭐⭐⭐  |\n| **配置管理**          | [spf13/viper](https://github.com/spf13/viper)                               | [Demo](https://github.com/spf13/viper#putting-values-into-viper)         | ⭐⭐⭐⭐⭐  |\n| **任务调度**          | [robfig/cron](https://github.com/robfig/cron)                               | [Demo](https://github.com/robfig/cron#example)                           | ⭐⭐⭐⭐   |\n| **CI/CD**         | [go-cmd/cmd](https://github.com/go-cmd/cmd)                                 | [Demo](https://github.com/go-cmd/cmd#examples)                           | ⭐⭐⭐⭐   |\n| **分布式锁**          | [go-redsync/redsync](https://github.com/go-redsync/redsync)                 | [Demo](https://github.com/go-redsync/redsync#usage)                      | ⭐⭐⭐⭐   |\n| **命令行工具**         | [spf13/cobra](https://github.com/spf13/cobra)                               | [Demo](https://github.com/spf13/cobra#usage)                             | ⭐⭐⭐⭐⭐  |\n| **分布式追踪**         | [opentracing/opentracing-go](https://github.com/opentracing/opentracing-go) | [Demo](https://github.com/opentracing/opentracing-go#tracing-a-function) | ⭐⭐⭐⭐   |\n| **并发控制**          | [panjf2000/ants](https://github.com/panjf2000/ants)                         | [Demo](https://github.com/panjf2000/ants#quick-start)                    | ⭐⭐⭐⭐   |\n| **国际化**           | [nicksnyder/go-i18n](https://github.com/nicksnyder/go-i18n)                 | [Demo](https://github.com/nicksnyder/go-i18n#usage)                      | ⭐⭐⭐⭐   |\n| **机器学习**          | [gorgonia/gorgonia](https://github.com/gorgonia/gorgonia)                   | [Demo](https://github.com/gorgonia/gorgonia#quick-start)                 | ⭐⭐⭐⭐   |\n| **区块链**           | [ethereum/go-ethereum](https://github.com/ethereum/go-ethereum)             | [Demo](https://github.com/ethereum/go-ethereum#quick-start)              | ⭐⭐⭐⭐   |\n\n---\n\n### Go优化实践\n\n| 文章                                                                                                                                                                                                                   | 关键词   | 难度  |\n| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- | --- |\n| [Go程序出问题了？有pprof！](https://mp.weixin.qq.com/s?__biz=MzIxNDc2ODc3MA==\u0026mid=2247486824\u0026idx=1\u0026sn=b536c61525ad422592eee9d57796aef6\u0026chksm=97a3c085a0d4499309e0d6d85ca4c562cf1a98cf114bb5330470fdc2b86d7dbccebb1d56ac3c#rd) | pprof | ⭐⭐⭐ |\n| [听说它可以让代码更优雅](https://mp.weixin.qq.com/s?__biz=MzIxNDc2ODc3MA==\u0026mid=2247487332\u0026idx=1\u0026sn=e6bbe038d919af24dea28b6c19a250b6\u0026chksm=97a3c289a0d44b9fb3f7b4353e320e33e8226c13953582ffda5cf2226cdb96efc74ccce51cae#rd)      | 静态检查  | ⭐⭐  |\n\n---\n\n### Go项目实践\n\n| 项目                                                 | 技术点        | 难度  |\n| -------------------------------------------------- | ---------- | --- |\n| [Go二维码小游戏](project/qrcode-go.md)                   | 二维码生成      | ⭐⭐  |\n| [文件传输工具](project/ftransferor.md)                   | TCP、哈希计算   | ⭐⭐  |\n| [SDK Demo](project/http-sdk.md)                    | SDK设计、HTTP | ⭐   |\n| [Beego RequestId 中间件](project/beego-request-id.md) | Beego      | ⭐   |\n| [Github OAuth Demo](project/oauth-demo.md)         | OAuth2.0   | ⭐   |\n| [protobuf-msg-reader](project/protobuf-msg-reader.md)         | JavaScript  | ⭐   |\n\n---\n\n### 技术专栏\n\n- [《玩转gRPC框架》](https://blog.csdn.net/mr_yanmingxin/category_12172887.html)\n\n---\n\n### 关注公众号获取最新更新\n\n![image-20231112190005980](img/wechat.jpg)\n\n有问题或建议可以提交[issue](https://github.com/ibarryyan/golang-tips-100/issues/new)，也可以微信公众号进行留言\n\n---\n\n### 请作者喝杯咖啡\n\n![image-20231112190005980](img/wxds.png)\n\n---\n\n### 致谢\n\n感谢[JetBrains](https://www.jetbrains.com)提供的IDE支持\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fibarryyan%2Fgolang-tips-100","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fibarryyan%2Fgolang-tips-100","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fibarryyan%2Fgolang-tips-100/lists"}