go-for-range修改原数据
基础知识 值类型&引用类型 区别 make&new for range中循环变量的坑 for range+引用类型 应用 修改pod中的container 结构定义 参考 基础知识 值类型&引用类型 go数据结构中包含值类型和引用类型两种: 引用类型: slice map channel interface function 值类型:其他基本数据结构 区别
基础知识 值类型&引用类型 区别 make&new for range中循环变量的坑 for range+引用类型 应用 修改pod中的container 结构定义 参考 基础知识 值类型&引用类型 go数据结构中包含值类型和引用类型两种: 引用类型: slice map channel interface function 值类型:其他基本数据结构 区别
顺序 用法 注意 顺序 defer被存储在栈结构中,注册defer函数对应入栈操作,执行defer函数对应出栈操作。 因此函数内的defer函数按照后入先出(LIFO)的顺序执行 用法 拦截panic,可以将程序从panic中recover回来 修改函数的命名返回值 输出调试信息 还原变量的旧值 注意 defer函数中变量的求值时机是入栈时 结合上一点,使用匿名函数+闭包,正确传递
基本特征 参考 基本特征 哪些类型不能做Key:类似于python要求不可变类型才能做key。go里的function、map、slice不能做key。 零值不可用 增删改查 查不存在的key会拿到零值,所以最佳实践是用ok判断存在性 delete不存在的key是安全的 参考
array slice 参考 array 数组二要素: 长度 类型 声明 var arr1 [3]int var arr2 = [...]int{1, 2, 3, 4, 5, 6} 问题:值拷贝机制下,数组传参造成性能问题 slice 形象化类比:slice和array的关系类似于文件描述符和文件的关系 从同一数组切出来的切片,共享底层数组,修改会互相影响 切片的切片同样共享同一底层数组
等价转换公式 区别 参考 等价转换公式 定义结构体如下 type T struct{ a int } receiver为结构体本身的方法及其等价转换后的方法为 func(t T)Get()int{ return t.a } // 等价于 func Get(t T)int{ return t.a } 类似的,receiver为结构体指针的方法及其等价转换后的方法为 func
1.引用自己的fork 2.修改fork后的项目自立门户 3.报错-module declares its path as X,but was required as Y 4.找到依赖项目了,但是找不到package 5.两阶段构建优化 6.有可能被间接引用过的包 7.依赖兼容性问题 8.pgpme 9.module name是不是可以不用仓库名前缀 10. 引用kubernetes源码 1.