
Golang
Biturd
个人博客:https://www.biturd.com/
展开
-
一、golang原理篇---从源代码文件到可执行文件过程发生了哪些事情?
1. compile源代码【本文的go代码为1.16,更高版本的可能文件差别很大】https://github.com/golang/go,golang源代码中路径为src/cmd/compile的包即为compile的全部代码,承担了将golang从.go文件编译成为二进制可执行文件的全部过程。src/cmd/compile/main.go即为编译器程序的入口文件。func main() { // disable timestamps for reproducible output log.原创 2022-01-01 16:13:50 · 1137 阅读 · 0 评论 -
go get 更改密码 权限错误 git ls-remote -q origin in terminal prompts disabled
GIT_TERMINAL_PROMPT=1 go get -u github.com/aaa/aaa原创 2021-12-15 20:07:22 · 2450 阅读 · 0 评论 -
完美解决go语言 mac m1 适配及调试器问题 idea can not run under Rosetta
1.下载对应版本的idea、或者goland。下载名后面有aarch64这种。2.go语言1.16才开始支持arm架构,所以要升级go语言的版本至少是1.16.【但是amd64我也试过,除了调试器之外没有发现其它问题】下载地址:https://golang.org/dl/3.如果还是不行的话,试试这个https://zhuanlan.zhihu.com/p/378979277...原创 2021-10-08 16:34:05 · 3220 阅读 · 0 评论 -
浅入不出设计模式---1、概览
1. 设计模式分类从范围上分为两类:类[通过对象关系建立,编译时就确定下来的] (几乎所有模式都用了继承,所以类模式只指那些集中于处理类间关系的模式)对象[在运行时可以变化,更具有动态性]从使用场景分为三类:创建型[类模式将对象的部分创建工作延迟到子类,对象模式将对象的部分创建延迟到另一个对象中]、结构型[类模式使用继承组合类,对象模式描述了对象的组装方式]、行为型[类模式使用继承描述算法和控制流,对象模式描述了一组对象怎样协作完成单个对象无法完成的任务]2. 设计模式之间原创 2021-10-03 14:19:17 · 80 阅读 · 0 评论 -
golang go mod依赖冲突 排查
https://tonybai.com/2019/12/21/go-modules-minimal-version-selection/原创 2021-09-23 10:30:07 · 2267 阅读 · 0 评论 -
golang go get 报错 fatal: could not read Username for ‘: terminal prompts disabled
这个错误是因为go get默认使用的git账户密码,更改了导致仓库的包拉不下来,但是 go get不会让重新输入密码,直接报错解决方案:export GIT_TERMINAL_PROMPT=1然后再拉包就会中断了,输入账户名密码即可。...原创 2021-09-17 20:14:38 · 1819 阅读 · 3 评论 -
golang目录分层规范
博主之前是做Java的,然后转go来写应用之后,还用原来那一套mvc的思维来分级,放置源文件组织程序。然后发现很多问题。Java是用类的角度来寻找调用方法的,而Go是按照包[目录]的角度,如果和Java一样MVC,三个包下面都放置很多不同业务的不同类时,写代码[看代码]的时候就会发现一个包下面的方法过多。然后包的作用也过于混乱或者笼统。建议的方式,把MVC,相同业务的Controller、View、Model放在一个以业务命名的包里面。[总的来说,在Go里面建议像Java很多类一样,多弄一些包]..原创 2021-09-16 11:12:26 · 820 阅读 · 0 评论 -
sync.Pool
https://www.zhihu.com/question/455751727/answer/1847171670https://zhuanlan.zhihu.com/p/76812714原创 2021-09-14 11:51:53 · 99 阅读 · 0 评论 -
leetcode练练语法-----59. 螺旋矩阵 II
func generateMatrix(n int) [][]int { ans := make([][]int, n) for i := range ans { ans[i] = make([]int, n) } // 定义各个边界 l,r,t,d := 0,n-1,0,n-1 curV := 1 // 表示当前行动到的地方 max := n*n for curV <= max{ for i:=l;i<=r;i++ { ans[t][i] = curV c原创 2021-09-05 21:30:39 · 89 阅读 · 0 评论 -
golang测试快速上手【表格驱动、覆盖率、性能、http、gin测试】
1. 表格驱动测试测试数据与逻辑分离出错信息可以自己diy【而不是简单的像Java那样期望得到,实际得到】跑完所有的测试数据才会停func TestGoT(t *testing.T) { tests := []struct { name string in1 string in2 int res string }{ {"test1", "biturd", 1, "biturd1"}, {"test2", "biturd", 2, "biturd2"}, {原创 2021-08-03 00:12:42 · 367 阅读 · 0 评论 -
Gin数据绑定[http请求体解析]
Gin数据绑定[http请求体解析]【Get、Post各种请求体的解析】1. 元信息Set、Get、MustGet、GetXXX[GetInt、GetTime]⭐️ 主要数据// Query DefaultQuery GetQuery 下面每一个方法都这三种。【主要的】 c.Query() // GET /path?id=1234&name=Manu&value= // GetPostForm is like PostForm(key). It returns the s原创 2021-07-25 22:27:29 · 897 阅读 · 0 评论 -
golang 包层级关系与模块化
1. 总览package mainimport ( test2 "biturd/test" "biturd/test/test" "github.com/gin-gonic/gin" "github.com/gin-gonic/gin/ginS" // "github.com/gin-gonic/gin/internal/json" 编译器直接不允许了)func main() { // 首先gin的包就叫gin, 只有gin直接目录下的文件【package gin】才能被其他原创 2021-07-25 22:26:57 · 1463 阅读 · 2 评论 -
go swag常用注释
生成在线文档校验接口时,主要使用这个@Param这种注解写对。个人理解,这些注释不是对代码功能的约束,而是对生成的前端测试ui中前端代码的约束。或者说对文档的约束param的格式:param name,param type,data type,is mandatory?,comment attribute(optional)@Param enumstring query string false "string enums" Enums(A, B, C)Param Typequerypath原创 2021-07-16 14:44:08 · 2161 阅读 · 0 评论 -
Golang中的类型断言与类型转换
类型断言的作用是在编译器的层面,可以让下文的代码使用变量时,使用指定类型的方法和属性。【Java中有属性,Go中只有方法】类型转换的作用是把类型强制转换成指定的类型。原创 2021-07-05 17:25:22 · 200 阅读 · 0 评论 -
golang的可比较性
可比较才可以用作map的键。可比较:基础类型指针不可比较:slicemap函数有时可比较有时不可比较接口原创 2021-07-05 16:59:01 · 259 阅读 · 0 评论 -
一文搞懂分布式应用中的熔断器、断路器
熔断器是当依赖的服务已经出现故障时,为了保证自身服务的正常运行不在访问依赖的服务,防止雪崩效应使用场景举个例子:服务A调用服务B时,B的故障会导致A的故障。因为A调用B然后一直阻塞没有响应,资源被占用得不到释放。两种分布式高可用的做法限流器:服务B使用限流器限制A的请求量,从而导致过多的请求导致处理不过来导致宕机。【作用于被调用者(B)】熔断器:服务A调用B的时候,如果B已经挂了,虽然B可能使用限流器什么的做到高可用,但是万一停电了或者其他的原因反正就是不可用了。A调用得到错误时就要使用熔.原创 2021-07-04 23:37:56 · 987 阅读 · 0 评论 -
golang module使用Makefile,构建并测试
有点像Maven,每一个goal对应很多的操作,没研究过C++,但是记得C++里面的Makefile貌似不是这种。使用方法make [goal]。# Protocol Buffers for Go with Gadgets## Copyright (c) 2013, The GoGo Authors. All rights reserved.# http://github.com/gogo/protobuf## Redistribution and use in source and binar原创 2021-04-26 20:35:26 · 282 阅读 · 0 评论