摘要:
1. 前言 select是Golang在语言层面提供的多路IO复用的机制,可以检测多个channel是否准备就绪(即是否可读或可写)。 本节试图通过源码总结其实现原理,从而发现一些使用误区或解释一些不常见的现象 2. 一些常见使用场景 当程序中使用多个case语句时,会随机选择一个进行执行 pack 阅读全文
摘要:
前言 仓库(Repository) 源仓库 开发者仓库 分支(Branch) 永久性分支 暂时性分支 工作流(workflow) 总结 前言 (本文假设各位已经对基本git的基本概念、操作有一定的理解,如无相关git知识,可以参考Pro Git这本书进行相关的学习和练习) 很多项目开发都会采用git 阅读全文
摘要:
1.起因 这个问题要从今天刚遇到的事儿说起,昨晚代码出了个乌龙事件,本来正在dev分支进行新功能的开发,但是测试出现的问题是在release 分支上,当时就想到使用stash 将正在开发的dev已经修改的代码 暂时存下来,然后切换到master,重新checkout -b 一个新的fix branc 阅读全文
摘要:
git tag版本代码快速修复 实际生产开发中,遇到突发情况,需要紧急修复线上bug,但是灰度环境(或者其他预生产测试环境)已经存在多个新功能的代码了,这时候我们可能选择直接在生产tag版本的代码上进行修复并发布。 local_branch : 本地分支名 tag_name : 生产tag分支 1. 阅读全文
摘要:
版本 当前更新版本:2021-04-23 版本地址:commit:#114 如果您发现任何更新、问题或改进,请随时 fork 和 PR Please feel free to fork and PR if you find any updates, issues or improvement. 目录 阅读全文
摘要:
1.前言 defer语句用于延迟函数的调用, 每次defer会把所在函数压入栈中, 函数在返回前再把延迟函数取出执行。 defer 函数所在的函数称为主函数, defer语句关联的函数称为延迟函数 延迟函数可能有输入参数,这些参数可能来源于定义defer的函数,延迟函数也可能引用主函数用于返回的变量 阅读全文
摘要:
1. string概念 Go标准库builtin给出了所有内置类型的定义。 源代码位于src/builtin/builtin.go,其中关于string的描述如下: // string is the set of all strings of 8-bit bytes, conventionally 阅读全文
摘要:
1. iota 概述 iota 常用于const表达式中,并且其值是从0开始的,const声明块中每增加一行iota值自增1. 使用iota可以简化常量的定义,但其规则需要牢牢记住。 2. 使用 2.1 日志模块中使用如下代码 type Priority int const ( LOG_EMERG 阅读全文
摘要:
概述 Go的struct声明允许字段附带Tag来对字段做一些标记 该Tag 不仅仅是一个字符,其主要的作用是用于反射场景, reflect包中提供了操作Tag 的方法,所以Tag的写法也要遵循一定的规则 Tag的本质 2.1 Tag规则 Tag本身是一个字符串,但字符串中却是:以空格分隔的 key: 阅读全文
摘要:
1. map数据结构 Map使用的哈希表作为底层实现,一个哈希表里可以有多个哈希表节点,也叫bucket,而每个bucket就保存了map中的一个或一组键值对。 map的数据结构由 runtime/map.go:hmap定义: type hmap struct { count int // 当前保存 阅读全文