![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Go
Embrace丶me
一只努力奋斗的咸鱼
展开
-
Go错误集锦 -- Map引起的崩溃concurrent map iteration and map write
今天早上一来领导告诉我消息源出问题了,赶紧检查日志,没有报错,于是跟着看nohup输出,看到一个error导致了程序崩溃:concurrent map iteration and map write. 看到这个错误信息,很容易就想到了,可能是在多线程中,同时对map进行了遍历和写操作,导致的崩溃。然后通过对代码进行检查,发现了确实有一处地方,没有对遍历map的操作加锁,导致了这个问题。之前只考虑到了读和写会引发崩溃,直到今天发生崩溃了才发现这个问题。 上一下之前的模拟代码:...原创 2020-07-14 11:30:01 · 10900 阅读 · 0 评论 -
Go语言基础、实战 -- 9. 方法
1. 简介 在面向对象编程中,一个对象其实就是一个简单的值或者一个变量,在这个对象中会包含一些函数,这种带有接收者的函数,称为方法。本质上,方法是和一种类型关联的函数。(类似于C++的成员函数,只有这种类型的对象才可以调用)2. 定义方式 在Go语言中,方法总是绑定对象实例,并隐式地将实例作为第一实参,方法的定义语法如下:func (v Type) MethodName() {}3. 实际例子 结构体作为接收者 首先,声明一个新的类型:t...原创 2020-05-09 16:44:32 · 344 阅读 · 0 评论 -
Go语言基础、实战 -- 8. 结构体
xxx原创 2020-04-29 15:39:21 · 355 阅读 · 0 评论 -
Go语言基础、实战 -- 7. 指针
1. 什么是指针 指针是存储内存地址的变量类型 2. 指针的声明与使用 指针的声明可以用一个已经存在的变量,也可以用 ==new(T)== 的形式:```govar num int = 5p_num := &numfmt.Printf("[%p] [%d]\n", p_num, *p_num) // 输出结果为:[0xc0000120a0] ...原创 2020-04-29 15:29:51 · 441 阅读 · 0 评论 -
Go语言基础、实战 -- 6. 字符串
1. 什么是字符串? 在Go中字符串是byte数组。可以通过将内容放在 " " 之间的方式来创建一个字符串。如下:s := "I am string" Go中的字符串符合Unicode标准,并以UTF-8编码。2. 访问字符串中的字节、遍历 因为字符串实际上是byte数组,所以可以通过下标访问一个字符串的单个字节,也可以遍历。如下:str := "He...原创 2020-04-28 20:13:58 · 185 阅读 · 0 评论 -
Go2sky -- Golang用skywalking实现全链路追踪
一、背景介绍 由于在微服务架构中,服务之间的调用关系多而复杂,所以有必要对它们之间的调用链路进行追踪、分析,判断是哪里出了问题,或者哪里耗时过多。 最近接到了这个需求,添加全链路追踪,所以研究并实践了一下,还不太深刻,若有错误的地方欢迎指正。二、OpenTracing相关概念介绍 首先,要实现全链路追踪,必须先理解OpenTracing的一...原创 2020-04-28 17:31:40 · 16839 阅读 · 5 评论 -
Go语言基础、实战 -- 5. map
一、map 1. 简介 map是Go的内置类型,是键值对(key-value)的形式,不再赘述。 2. 语法 map类型的表示语法为:map[KeyType]ValueType 3. 声明 可以用普通的声明方式,也可以用速记声明,还可以声明同时初始化,如下:salary := make(map[string]...原创 2019-12-25 20:41:08 · 281 阅读 · 0 评论 -
Go语言基础、实战 -- 4. 数组、切片
一、数组 1. 简介 数组:是指相同元素的集合。 元素:数组中包含的每个数据,被称为元素。 长度:数组中元素的个数,被称为数组的长度。 注意:数组长度也是数组类型的一部分,比如 [2]int 和 [3]int 两个数组,类型是不同的。 2. 声明数组 数组的类型为 [n]T ,n表示数组中...原创 2019-11-28 21:02:31 · 561 阅读 · 0 评论 -
Go语言基础、实战 -- 3. 条件和循环语句
一、条件 Go语言中提供了if-else的条件判断 1. 语法 if-else语句基本语法为:if condition { ...} else if condition2 { ...} else { ...} 2. 变体 Go语言允许我们在 if 后面再执行一个语句,然后再做判断,语法为:...原创 2019-11-26 20:02:34 · 214 阅读 · 0 评论 -
Go语言基础、实战 -- 2. 函数、变参函数和包
一、函数 1. 函数语法 func FuncName(ParamName Type) ReturnType ,如下:func FuncName(param int) int { return 1} 如果有多个相同类型的参数,不必每个变量后面都写类型,可以写在一起,如下:func FuncName(price, volume int...原创 2019-11-25 20:40:25 · 205 阅读 · 0 评论 -
Go语言基础、实战
最近由于工作需要,学习并使用了go。之前一直有点井底之蛙,一门心思只想钻研C++,但是最近接触了别的语言之后,才有了感慨,不必执着于什么语言,说到底也只是帮助我们实现的工具而已。之前学了点rust的皮毛,而这次比较全面了了解了GO语言,简直不要太爽,哈哈哈。所以新建了一个博客,以此来记录,也算是做个笔记吧,同时也能鞭策自己,更加全面深入的思考。 本系列博客,希望尽量少在基础语法上啰嗦...原创 2019-11-02 16:30:02 · 442 阅读 · 0 评论 -
Go语言基础、实战 -- 1. 变量、类型和常量
一、变量 首先呢,变量是啥意思我就不解释了 1. 变量的声明及初始化 Go语言声明变量的方式有很多种形式,比如,可以带var关键字,可以不带;可以单个变量声明,也可以多个变量声明; 可以给初始值,也可以不给。var age int //声明不初始化,age=0var age int = 25 ...原创 2019-11-02 17:53:40 · 220 阅读 · 0 评论