![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Go
OH,CGWLMXUP
这个作者很懒,什么都没留下…
展开
-
Golang协程详解
一、Golang 线程和协程的区别 备注:需要区分进程、线程(内核级线程)、协程(用户级线程)三个概念。 进程、线程 和 协程 之间概念的区别 对于进程、线程,都是有内核进行调度,有 CPU 时间片的概念,进行抢占式调度(有多种调度算法) 对于协程(用户级线程),这是对内核透明的,也就是系统并不知道有协程的存在,是完全由用户自己的程序进行调度的,因为是由用户程序自己控制...转载 2019-03-21 15:44:21 · 239 阅读 · 0 评论 -
go 多层map处理
mainMapA := map[string]map[string]string{} subMapA := map[string]string{"A_Key_1": "A_SubValue_1", "A_Key_2": "A_SubValue_2"} mainMapA["MapA"] = subMapA fmt.Println("MultityMapA") f...原创 2019-07-05 15:36:24 · 1834 阅读 · 0 评论 -
golang后台---IRC聊天服务实战案例(一)
背景: 通过go实现后台聊天服务,主要业务场景是通过服务自动实时加入聊天室并根据特定的时间戳发送响应的聊天消息。技术点: IRC服务协议互通,包括网络地址链接、加入聊天室、接受聊天消息、定时发送指定聊天内容、定时更新房间号和加入房间的用户信息等。服务环境: 开发环境:个人linux开发机 运行环境:测试环境 + 灰度环境 + ...原创 2019-07-13 09:46:58 · 461 阅读 · 0 评论 -
go语言string、int、int64互相转换
#string到intint,err:=strconv.Atoi(string)#string到int64int64, err := strconv.ParseInt(string, 10, 64)#int到stringstring:=strconv.Itoa(int)#int64到stringstring:=strconv.FormatInt(int64,10)...原创 2019-07-03 08:33:26 · 141 阅读 · 0 评论 -
go vendor
go vendor 是go 1.5 官方引入管理包依赖的方式,1.6正式引入其基本思路是,将引用的外部包的源代码放在当前工程的vendor目录下面,go 1.6以后编译go代码会优先从vendor目录先寻找依赖包;将源码拷贝到当前工程的vendor目录下,这样打包当前的工程代码到任意机器的$GOPATH/src下都可以通过编译,避免项目代码外部依赖过多,迁移后,需要多次go get 外包依...原创 2019-04-09 15:04:21 · 521 阅读 · 0 评论 -
Linux上安装Go环境:绝对可用
1,sudo do 进入root环境2,下载go安装包wgethttps://dl.google.com/go/go1.12.1.linux-amd64.tar.gz3,解压压缩包tar zxvfgo1.12.1.linux-amd64.tar.gz 会解压到当前所在目录。4,切换到root用户,将解压后的文件复制到/usr/local目录下5,配置环境...原创 2019-04-02 10:47:07 · 296 阅读 · 0 评论 -
Go学习笔记----7,Go语言中string和interface{}各种类型互转
package mainimport ( "fmt" "strconv")func main() { //string与int互转 var num1 int = 10; //Itoa底层调用的是FormatInt //I to S str1 := strconv.Itoa(num1) fmt.Println(str1)...原创 2019-03-28 17:20:54 · 4286 阅读 · 0 评论 -
Go学习笔记----6,各种语法基础技术使用详解(错误处理、并发通道)
Go 语言通过内置的错误接口提供了非常简单的错误处理机制。error类型是一个接口类型,这是它的定义:type error interface { Error() string}我们可以在编码中通过实现 error 接口类型来生成错误信息。函数通常在最后的返回值中返回错误信息。使用errors.New 可返回一个错误信息:func Sqrt(f float64) ...原创 2019-03-27 19:04:10 · 196 阅读 · 0 评论 -
Go学习笔记----5,各种语法基础技术使用详解(Map(集合)、接口)
Go 语言Map(集合)和C++类似,Go的Map是一种无序的键值对集合。定义 Map/* 声明变量,默认 map 是 nil */var map_variable map[key_data_type]value_data_type/* 使用 make 函数 */map_variable := make(map[key_data_type]value_data_type)...原创 2019-03-27 18:50:00 · 158 阅读 · 0 评论 -
Go学习笔记----4,各种语法基础技术使用详解(切片)
Go 语言切片(Slice)切片(“动态数组”)是对数组的抽象,数组是长度不变的,切片可以追加元素。定义切片:var identifier []typeslice := make([]type, len)切片初始化:s := []int{1,2,3}s := arr[startIndex:endIndex] 将arr中从下标startIndex到endIndex-1 下的元素创建为一个...原创 2019-03-27 18:40:28 · 129 阅读 · 0 评论 -
ElasticSearch的matchQuery与termQuery
matchQuery与termQuery区别:matchQuery:会将搜索词分词,再与目标查询字段进行匹配,若分词中的任意一个词与目标字段匹配上,则可查询到。termQuery:不会对搜索词进行分词处理,而是作为一个整体与目标字段进行匹配,若完全匹配,则可查询到。各种term query的 QueryBuild 构建 官方文档地址:https://www.elastic.co/gui...原创 2019-04-10 11:10:53 · 5098 阅读 · 0 评论 -
Go学习笔记----3,各种语法基础技术使用详解(函数、数组、指针)
Go 语言函数格式如下:func function_name( [parameter list] ) [return_types] { 函数体}函数定义解析:func:函数由 func 开始声明 function_name:函数名称,函数名和参数列表一起构成了函数签名。 parameter list:参数列表,参数就像一个占位符,当函数被调用时,你可以将值传递给参数,...原创 2019-03-22 14:55:11 · 255 阅读 · 0 评论 -
Go学习笔记----2,各种语法基础技术使用详解(变量、常量、iota、运算符、条件语句)
Go 语言变量变量声明使用var关键字,格式:var xxx type1,var v int v = 12,自行判断变量类型 var v = 13,省略var,注意:=(声明语句)左侧如果没有生成新的变量,就产生编译错误,格式:v := 1 例如:var v int v := 1 //编译错误 v, v1 := 1, 2 //正确,...原创 2019-03-22 14:36:25 · 154 阅读 · 0 评论 -
Go学习笔记----1,基础语法与数据类型
由于本身C++出身学习Go,因此对比学习成为常态。Go 程序同样可以由多个标记组成,可以是关键字,标识符,常量,字符串,符号。这里说区别:行分隔符在 Go 程序中,一行代表一个语句结束。每个语句不需要像 C 家族中的其它语言一样以分号 ; 结尾,因为这些工作都将由 Go 编译器自动完成。如果你打算将多个语句写在同一行,它们则必须使用 ; 人为区分,但在实际开发中我们并不鼓励这种做法。...原创 2019-03-22 11:43:10 · 182 阅读 · 0 评论 -
go-channel介绍使用
make(chan int, 10)这个表达式初始化了一个通道类型的值,传递给make函数的第一个参数表明此值的具体类型为int的通道类型,而第二个参数则指出该通道在同一时刻最多可以缓冲10个元素值。当然,可以在初始化一个通道的时候省略第二个参数值: make(chan int),一个通道值得缓冲容量总是固定不变的,如果第二个参数被省略了,就表示被初始化的这个通道永远无法缓冲任何元素值。发...原创 2019-07-19 09:07:08 · 143 阅读 · 0 评论