Go面试题
1.make和new的区别?new内置函数new 只接受一个参数,该参数是一个类型而不是值,返回值是该类型新分配为零值的指针。 1234// The new built-in function allocates memory. The first argument is a type,// not a value, and the value returned is a pointer t...
1.make和new的区别?new内置函数new 只接受一个参数,该参数是一个类型而不是值,返回值是该类型新分配为零值的指针。 1234// The new built-in function allocates memory. The first argument is a type,// not a value, and the value returned is a pointer t...
撤销写完代码后,我们一般这样 123git add . //添加所有文件git commit -m "本功能全部完成" 执行完commit后,想撤回commit,怎么办? 1git reset --soft HEAD^ 这样就成功的撤销了你的commit。 注意,仅仅是撤回commit操作,您写的代码仍然保留。HEAD^的意思是上一个版本,也可以写成HEAD~1,如果...
一、Git统计代码量1.根据用户名时间段统计123git log --author="username" --since=2018-01-01 --until=2019-12-31 \--pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } \EN...
本篇是mygin这个系列的最后一篇。如果想自己动手实现一个类似Gin的Web框架,建议从 mgin第一篇开始,总代码行数有效行数只有600多行 github源码 mygin 目的 实现错误处理机制 panic简介在实现错误处理机制之前,我们知道在Go 中,错误的处理方式依靠return返回,由调用者处理。如果是不可恢复的错误,可以手动抛出错误,当然在实际运行中,也会遇到不可处理的错误,比...
本篇是mygin的第八篇,参照gin框架,Mygin从零开始完全手写,在实现的同时,带你一窥gin框架的核心原理实现。 目的 中间件Middleware优化 默认log日志中间件在上篇 Mygin实现中间件Middleware 中间件Middleware很生硬,完全依赖循环,如果某个中间件想要cover住全部中间件,比如我想记录,整个请求的耗时时间,以便针对优化的功能。因此需要把之前生硬的方...
本篇是mygin的第六篇,参照gin框架,感兴趣的可以从 Mygin第一篇 开始看,Mygin从零开始完全手写,在实现的同时,带你一窥gin框架的核心原理实现。 目的 sync.Pool 的作用介绍 mygin中使用sync.Pool sync.Pool 的作用先看看官方文档怎样说的吧,我截取了官方文档的第一句。 12// A Pool is a set of temporary obje...
本篇是mygin的第六篇,参照gin框架,感兴趣的可以从 Mygin第一篇 开始看,Mygin从零开始完全手写,在实现的同时,带你一窥gin框架的核心原理实现。 目的 实现中间件Middleware在上一篇 Mygin实现分组路由Group 中,实现了路由分组,且同一分组的执行,会先执行Group,有一点点中间件的雏形了。但是中间件不完全还应该提供中断功能,比如一个Group组中添加了aut...
本篇是Mygin第五篇 目的 实现路由分组 为什么要分组分组控制(Group Control)是 Web 框架应该提供的基础功能之一,对同一模块功能的开发,应该有相同的前缀。或者对一部分第三方接口,统一需要加解密等功能。分组后很方便。例如: 对于任务模块,统一前缀为/task 除去/user/login接口,都需要鉴权 以/openapi 开头的接...
本篇是Mygin的第四篇 目的 使用 Trie 树实现动态路由解析。 参数绑定 前缀树本篇比前几篇要复杂一点,原来的路由是用map实现,索引非常高效,但是有一个弊端,键值对的存储的方式,只能用来索引静态路由。遇到类似hello/:name这动态路由就无能为力了,实现动态路由最常用的数据结构,被称为前缀树。这种结构非常适用于路由匹配。比如我们定义了如下路由: /a...
本篇是Mygin的第三篇 目的 将路由独立出来,方便后续扩展修改 上下文Context,对http.ResponseWriter和http.Request进行封装,实现对JSON、HTML等的支持 路由新建一个router文件,将 Mygin实现简单的路由 中将路由部分复制出来 新建Mygin/router.go 1234567891011121314151617181920...