golang 学习路线
golang 新手入门学习路线,一起加油吧!
SunnyJim
golang 、docker、k8s、istio
展开
-
Golang Kubernetes yaml 合规性校验
文件之前没有任何校验,导致发布之后。保存之前先进行合规性校验。原创 2023-05-16 18:46:19 · 387 阅读 · 0 评论 -
GRPC 程序在 Kubernetes 中的负载均衡
本文的背景使用的是 kratos 框架。原创 2023-05-10 16:36:37 · 1177 阅读 · 0 评论 -
Golang 使用 gorm 错误: reflect: reflect.Value.Set using unaddressable value
using unaddressable value原创 2022-10-13 17:32:38 · 3561 阅读 · 0 评论 -
Golang 处理 XML version 1.1 数据
xml version 1.1 to go struct原创 2022-09-20 10:47:17 · 433 阅读 · 0 评论 -
Golang 基于数组、链表实现队列
使用数组、队列实现简单的队列能力Top() 返回队列第一个元素Add() 入队Remove(data int) 出队package mainfunc main() { lq := NewListQueue() lq.Add(10) lq.Add(20) lq.Add(25) lq.Add(30) lq.Add(100) lq.Remove() lq.Remove() lq.Remove() lq.Remove() fmt.Println(lq.size) lq.Ad原创 2022-02-25 14:29:31 · 216 阅读 · 0 评论 -
Golang 好用的 gzip 压缩方式
下面方法是在我在开发 prometheus 过程中,发现 prometheus config 的压缩方法,很好用。// copy from pkg/prometheus/operator.go line.1501func (*PrometheusJob) zip(b []byte) []byte { var buf bytes.Buffer if err := gzipConfig(&buf, b); err != nil { return nil } return buf.By原创 2022-02-22 10:51:40 · 1702 阅读 · 0 评论 -
Golang 基于数组、链表实现栈
下面基于数组和链表实现的自定义栈,只有简单的功能Top() 返回栈顶元素Pop() 元素出栈Push(data int) 元素入栈package maintype stack interface { Top() int Pop() int Push(data int)}type Liststack struct { data []int size int lock sync.Mutex}type LinkStack struct { root *LinkNode原创 2022-02-15 17:13:52 · 351 阅读 · 0 评论 -
Golang 快速排序
func main() { nums := []int{6, 10, 2, 4, 9, 15, 5, 39, 15, 7, 6, 13} fastSort(nums) fmt.Println(nums)}func fastSort(nums []int) { for i := 1; i <= len(nums) - 1; i++ { current := nums[i] prev := i - 1 if current < nums[prev] { for原创 2022-02-11 18:15:11 · 400 阅读 · 0 评论 -
Golang go mod tidy 错误修复
以下是部分错误日志agent/src/istio/vm imports istio.io/istio/pilot/pkg/model imports istio.io/istio/pkg/config/xds imports github.com/envoyproxy/go-control-plane/envoy/service/status/v4alpha: module github.com/envoyproxy/go-control-plane@latest found (v0.10.1),原创 2022-02-10 16:53:30 · 2582 阅读 · 0 评论 -
Golang 双向链表
模拟的 java LinkedList,目前只实现了 add(),稍晚会更新添加其他功能type LinkedList struct { len int head *LinkedNode tail *LinkedNode}type LinkedNode struct { data int next *LinkedNode pre *LinkedNode}func NewLinkedList() *LinkedList { return &LinkedList{ l原创 2022-02-09 13:44:08 · 729 阅读 · 0 评论 -
Golang 二分查找
func main() { nums := []int{1, 10, 12, 34, 55, 63, 67, 89, 91, 100} fmt.Println(search(12, nums, 0, len(nums)-1))}// search 从给定的数据中查找指定的数值, 不存在返回 -1func search(target int, arr []int, l, r int) int { if l > r { return -1 } m := (l + r) / 2原创 2022-02-09 10:15:44 · 316 阅读 · 0 评论 -
Golang 定时器与 time.After() 结合使用踩坑记录
功能描述: 在 goroutine 定时执行一些内容比如: 打印 hello world,然后五分钟或者十分钟后退出 goroutin。func main() { go func() { ticker := time.NewTicker(time.Second * 1) for { select { case <-ticker.C: fmt.Println("hello world") case <-time.After(time.Second * 15)原创 2021-09-08 11:23:34 · 6503 阅读 · 0 评论 -
Json: struct field readyReplicas has json tag but is not exported
type MeshStatus struct { // INSERT ADDITIONAL STATUS FIELD - define observed state of cluster // Important: Run "make" to regenerate code after modifying this file AvailableReplicas int `json:"available_replicas,omitempty"` readyReplicas int `json:原创 2021-07-16 17:07:48 · 3829 阅读 · 0 评论 -
Golang 值复制引来的深、浅拷贝问题
ps:今天在开发中遇到,实际使用却和我想的并不一样。不包含指针的指针结构体值传递type school struct { name string addr string}func main() { s1 := &school{ name: "第一小学", addr: "海淀区", } s2 := new(school) *s2 = *s1 fmt.Printf("s1 = %+v\n", s1) fmt.Printf("s2 = %+v\n", s2) s2.原创 2021-01-20 15:55:41 · 795 阅读 · 3 评论 -
Golang interface{} 转换为某个结构体
ps:开发中实际遇到的场景,在 go 语言中 interface{} 可以接收任何类型,但是我们实际使用不光需要接收,我们接收之后更是要操作这些值简单的类型转换var num1 int32 = 10fmt.Printf("Type: %T, Value: %d\n", num1, num1)num2 := uint32(num1)fmt.Printf("Type: %T, Value: %d\n", num2, num2)outputType: int32, Value: 10Type:原创 2020-09-15 10:20:05 · 9699 阅读 · 0 评论 -
gRPC Golang 客户端调用 Java 服务
proto protobufsyntax = "proto3";option go_package = "proto";option java_multiple_files = true;option java_package = "com.bocloud.autorelease.hello";option java_outer_classname = "HelloProto";option objc_class_prefix = "HL";package hello;service原创 2020-09-11 10:24:32 · 1074 阅读 · 0 评论 -
Golang 拼接字符串
ps:同样是开发刚好使用到所以随手记了下来这里不推荐使用 + 进行拼接因为可读性不好,我们可以将字符串放到一个数组中,下面是例子list := []string{"tom", "jerry", "lisa"}// 调用Join函数names := strings.Join(list, ",")fmt.Print(names)outputtom,jerry,lisa...原创 2020-08-01 11:19:03 · 341 阅读 · 0 评论 -
Golang int 转换 string
ps:同样是开发刚好使用到所以随手记了下来以下是错误的方法func main() { num := string(100/3) fmt.Println(num)}结果竟然是一个 !正确的方法func main() { num := fmt.Sprintf("%d", 100/3) fmt.Printf(num)}结果 33,fmt.Sprintf("%d", 100/3) Sprintf 根据格式说明符格式化并返回字符串结果...原创 2020-06-29 17:32:36 · 2940 阅读 · 0 评论 -
Golang 判断字符串是否包含某个字符
ps:今天开发刚好是用到,所以随手记了下来func main() { if find := strings.Contains("test-v1", "v1"); find { fmt.Println("find the character.") }}find the character.原创 2020-06-29 17:24:41 · 33766 阅读 · 0 评论 -
Golang 跨平台编译
例如:在 windows 环境编译 linux 可以执行文件或者在 linux 环境编译 windows 可执行文件windows 环境编译 linux设置参数:export CGO_ENABLED=0export GOOS=linuxexport GOARCH=amd64我是在 windows 环境使用 git 设置的参数,如果使用 cmd 命令行需要把 export 替换为 SE...原创 2020-03-01 16:49:06 · 702 阅读 · 0 评论 -
Golang 学习路线 - Part 27:Go 中的继承
这里是 Golang 教程系列的第二十七部分。原创 2019-12-23 15:46:46 · 323 阅读 · 0 评论 -
Golang 学习路线 - Part 26:Go 中的 OOP
这里是 Golang 教程系列的第二十六部分。翻译 2019-12-14 14:11:36 · 215 阅读 · 0 评论 -
Golang 学习路线 - Part 25:互斥锁(Mutex)
这里是 Golang 教程系列的第二十五部分。翻译 2019-11-15 14:43:01 · 211 阅读 · 0 评论 -
Golang 学习路线 - Part 24:Select
这里是 Golang 教程系列的第二十四部分。翻译 2019-11-13 17:55:51 · 182 阅读 · 0 评论 -
Golang 学习路线 - Part 23:缓冲 Channels (Buffered Channels)和 工作池(Worker Pools)
这里是 Golang 教程系列的第二十三部分。翻译 2019-11-08 09:46:31 · 344 阅读 · 0 评论 -
Golang 学习路线 - Part 22:Channels
这里是 Golang 教程系列的第二十二部分。翻译 2019-11-06 15:47:10 · 269 阅读 · 0 评论 -
Golang 学习路线 - Part 21:Goroutines
这里是 Golang 教程系列的第二十一部分。翻译 2019-10-25 16:52:59 · 259 阅读 · 0 评论 -
Golang 学习路线 - Part 20:并发介绍
这里是 Golang 教程系列的第二十部分。翻译 2019-10-25 16:38:15 · 218 阅读 · 0 评论 -
Golang 学习路线 - Part 19:接口 II
这里是 Golang 教程系列的第十九部分。下一教程 - 并发介绍翻译 2019-10-22 14:32:31 · 189 阅读 · 0 评论 -
Golang 学习路线 - Part 18:接口 I
这里是 Golang 教程系列的第十八部分。下一教程 - 接口 II翻译 2019-10-22 14:40:48 · 218 阅读 · 0 评论 -
golang 按照空格分隔字符串
context := strings.Fields("zhangsan lisi wanger") fmt.Printf("context[0] is: %s\n", context[0]) fmt.Printf("context[1] is: %s\n", context[1]) fmt.Printf("context[2] is: %s\n", context[2]) fmt.Pri...原创 2019-10-22 09:42:51 · 8596 阅读 · 1 评论 -
Golang 学习路线 - Part 17:Go 中的 Methods(方法)
这里是 Golang 教程系列的第十七部分。翻译 2019-10-18 11:15:16 · 365 阅读 · 0 评论 -
Golang 学习路线 - Part 16:结构体
这里是 Golang 教程系列的第十六部分。翻译 2019-10-17 14:28:43 · 178 阅读 · 0 评论 -
Golang 学习路线 - Part 15:指针
这里是 Golang 教程系列的第十五部分。翻译 2019-10-17 10:38:49 · 235 阅读 · 0 评论 -
Golang 学习路线 - Part 14:Strings(字符串)
这里是 Golang 教程系列的第十四部分。字符串在 Go 中值得特别提及,因为与其他语言相比,字符串在实现上有所不同。什么是字符串Go 中的字符串是字节切片。字符串可以通过将其内容封装在 "" 中来创建。让我们来看一个创建字符串并打印它的简单示例。package mainimport ( "fmt")func main() { name := "Hell...翻译 2019-10-17 10:37:41 · 185 阅读 · 0 评论 -
Golang 学习路线 - Part 13:Map(集合)
这里是 Golang 教程系列的第十三部分。翻译 2019-10-15 14:17:14 · 246 阅读 · 0 评论 -
Golang 学习路线 - Part 12:可变参数函数
这里是 Golang 教程系列的第十二部分。翻译 2019-10-14 17:50:17 · 537 阅读 · 0 评论 -
Golang 学习路线 - Part 11:数组和切片
这里是 Golang 教程系列的第十一部分。翻译 2019-10-14 13:55:28 · 248 阅读 · 0 评论 -
Golang 中的切片
数组切片上一篇我已经提过数组的特点:即数组的长度在定义之后无法修改;数组是值类型,无法满足我们需要引用传递.Go 语言提供了切片来弥补数组的不足!从底层的实现角度来看,数组实际上仍然使用数组来管理元素,基于数组切片添加了一系列的管理功能,可以随时动态扩充存放空间,并且可以随意传递而不会导致管理的元素被重复复制.1:创建数组切片func main(){ //定义数组 var array...原创 2018-11-29 14:53:51 · 472 阅读 · 0 评论 -
Go语言排序
算法实现接下来我们就实现排序算法。因为算法本身并不在本书讨论的范畴,所以就不再解释冒泡排序和快速排序的算法原理.冒泡排序算法位于bubblesort.go这个源文件中,快速排序算法则位于qsort.go文件中. 对于这种纯算法的模块,我们应该自然而然地为其编写单元测试模块。我们在第7章中将专门介绍单元测试的相关内容.1:冒泡排序冒泡排序中,包含着一个具体的算法实现原文件和一个测试文件:/...原创 2018-11-30 10:52:35 · 115 阅读 · 0 评论