golang
文章平均质量分 71
fenglllle
这个作者很懒,什么都没留下…
展开
-
API-Server的监听器Controller的List分页失效
最近做项目,还是K8S的插件监听器(理论上插件都是通过API-server通信),官方的不同写法居然都能出现争议,争议点就是对API-Server的请求的耗时,说是会影响API-Server。实际上通过源码分析两着有差别,但是差别不大,对API-Server的影响几乎一样。知其然知其所以然,要想知道为什么分页不生效,需要自定义API-Server debug才行,看代码很难看出原因,因为K8S实际上估计设计的时候也考虑过这个。原创 2023-03-18 22:08:55 · 572 阅读 · 0 评论 -
go 函数或者方法参数调用的过程
最近做项目,使用go开发,但是在发生函数调用传参数时,对指针的指针的传递有难以理解的代码,就此分析过程。尤其是对于多重指针作为参数,而且对于一些内置函数的修改逻辑也需深入的理解。这里的问题是切片本身是指针,如果再加入指针,就是指针的指针,很难理解。而且再结合函数的参数,本身函数的参数是一个引用,栈变量自己又会分配内存地址,就更难理解了😅。这里的关键还有切片是一个结构体存储的,但是结构体又是内存值拷贝,而非内存地址引用。实际上可以结合内存分配的流程结合函数的入栈出栈,外加参数的存储结构很容易就明白原理了。原创 2023-01-17 22:09:52 · 780 阅读 · 0 评论 -
go return返回值屏蔽
最近需要写一个云环境的可执行程序,一般使用go语言,毕竟GC+原生运行,结合了不需要回收指针的能力和原生运行,但是在程序返回时,笔者看到一个sdk的源码懵了,返回的数据居然可以隐式返回。go 版本笔者看到的代码,可以明显看到返回值是没写的,go却是一个强类型语言,返回值不匹配是会报错的,那么可以推断,这个go编译器自己把返回值变量的数据返回,所以没有定义返回值变量的不能这样使用。 1. 没有任何数据的时候那么就会返回一个初始化的符合要求的值,即返回值的变量(因为返回值的变量会默认初始化一个值) 验证正原创 2022-12-03 18:21:55 · 566 阅读 · 0 评论 -
go slice 扩容机制
go语言没有ArrayList这样的封装,但是官方原生提供slice,底层就是数组存储,并且能自动扩容,相较于ArrayList的默认10,扩容5,slice的逻辑是有区别的。slice默认容量0。数组本质是不可扩容的,数组的扩容实际上就是创建新的数组,分配新的内存,然后执行数组的拷贝,所以slice实际上就需要数组新的内存地址的返回,指针指向新的内存地址。扩容时:当前需要容量如果小于当前的容量,无需扩容;否则2倍扩容当前需要容量大于当前容量2倍,直接扩容至当前容量。原创 2022-11-23 19:39:00 · 1598 阅读 · 1 评论 -
godoc安装与go文档查询
最近在用go语言做项目,语法还是很简单的,但是API不熟悉,😅,另外也没有类似Java的Spring这样的独秀的IOC和AOP框架,灵活度很大,经常需要查询文档,但是godoc从go1.14.2开始就从内置SDK移除了。实际上godoc是一个很方便的文档查询工具,不知道为什么go sdk移除掉了,但是可以通过手动安装的方式安装,实现本地文档查看。原创 2022-11-22 22:00:07 · 789 阅读 · 0 评论