
golang
远行的蜗牛2016
勤于梳理归纳,构建知识架构,结交同道中人,乐于互通有无。
展开
-
golang常见问题解决
整理汇总golang 学习中常见的问题问题: go test进行单元测试时,出现undefined方法或者command-line-arguments [build failed原因:解决方案:go test进行单元测试时,出现undefined方法或者command-line-arguments [build failed]解决方案...原创 2022-02-10 10:04:52 · 627 阅读 · 0 评论 -
go 线程池实现
package mainimport ( "errors" "fmt" "sync" "sync/atomic" "time")// 定义任务type Task struct { Handler func(v ...interface{}) //可变参数 ,处理可变参数 Params []interface{} // 定义空接口}// 任务池的定义type Pool struct { capacity uint64 runningWork转载 2022-02-09 17:45:04 · 770 阅读 · 0 评论 -
go 占位符作用
go中占位符号在代码中作用range类似迭代器,可以遍历数组,字符串,map等等,对象的不同,返回的结果也不同。range会复制对象,而不是不是直接在原对象上操作。关键字 range 会返回两个值,第一个值是当前迭代到的索引位置,第二个值是该位置对应元素值的一份副本,如下图所示。package mainimport "fmt"func main() { // 这里我们使用range来计算一个切片的所有元素和 // 这种方法对数组也适用 nums := []int{2, 3, 4原创 2022-02-09 11:53:07 · 347 阅读 · 0 评论 -
go指针进行数据交换
package mainimport "fmt"func swap(a, b *int) { t := *a *a = *b *b = t}func swap2(a *int, b *int) { t := *a *a = *b *b = t}func main() { x, y := 10, 20 swap(&x, &y) fmt.Println(x, y) u, v := 101, 202 swap2(&u, &v)原创 2022-02-09 10:16:16 · 409 阅读 · 0 评论 -
Go 并发编程
go 并发实现go 多线程如何实现同步实现格式:go 函数名(参数列表)函数名: 要调用的函数名参数列表:调用函数需要传入的参数使用go 关键字创建goroutine时,被调用函数的返回值会被忽略,如果需要在goroutine中返回数据,使用channel进行返回。package mainimport ( "fmt" "time")func goroutine1() { fmt.Println("Hello goroutine")}func main() { go原创 2022-02-08 16:54:55 · 136 阅读 · 0 评论 -
go reflect 学习笔记
go reflect 用例原创 2022-02-08 15:27:15 · 475 阅读 · 0 评论 -
go 并发
go 并发的实现,以及多线程的同步go 语言具有天生的并发优势,很方便实现并发。1.go怎么实现多线程那?2.go 多线程的同步怎么实现3.go 如何避免死锁问题一案例问题二案例问题三案例原创 2022-02-08 14:24:14 · 405 阅读 · 0 评论 -
go interface 使用案例
go interface 接口实现案例原创 2022-02-08 11:53:11 · 504 阅读 · 0 评论 -
go dbus 使用
godbus 学习资料 比较全面go dbus 应用原创 2022-01-23 10:19:46 · 995 阅读 · 0 评论 -
使用go mod 进行包管理
go range make 功能* Go 语言中 range 关键字用于 for 循环中迭代数组(array)、切片(slice)、通道(channel)或集合(map)的元素。在数组和切片中它返回元素的索引和索引对应的值,在集合中返回 key-value 对。* make 的作用是初始化内置的数据结构,也就是我们在前面提到的切片、哈希表和 Channel2;* new 的作用是根据传入的类型分配一片内存空间并返回指向这片内存空间的指针3;使用go mod 进行包管理命令作用原创 2022-01-23 10:19:15 · 771 阅读 · 0 评论 -
go Slice 的用法
切片的实现(类似数组)map 的实现声明方式:var map1 map[keytype]valuetypevar map1 map[string]int([keytype] 和 valuetype 之间允许有空格,但是 gofmt 移除了空格)在声明的时候不需要知道 map 的长度,map 是可以动态增长的。未初始化的 map 的值是 nil。key 可以是任意可以用 == 或者 != 操作符比较的类型,比如 string、int、float。所以数组、切片和结构体不能作为 key (译原创 2022-01-23 10:18:21 · 212 阅读 · 0 评论 -
go匿名函数
匿名函数和闭包关系我们不希望给函数起名字的时候,可以使用匿名函数,匿名函数同样称为闭包.package mainimport "fmt"func main() { f()}func f() { for i := 0; i < 4; i++ { g := func(i int) { fmt.Printf("%d ", i) } g(i) fmt.Printf(" - g is of type %T and has value %v\n", g, g) }}原创 2022-01-23 10:16:21 · 229 阅读 · 0 评论 -
linux 环境安装golang开发环境
$ wget https://studygolang.com/dl/golang/go1.13.6.linux-amd64.tar.gz$ tar -zxvf go1.13.6.linux-amd64.tar.gz$ sudo mv go /usr/local/使用编辑器例如vim /etc/profile 命令打开 profile 文件,并将下面的环境变量添加到文件末尾。添加完成后使用:wq 命令保存并退出。export GOROOT=/usr/local/goexport PA...原创 2021-06-29 18:55:54 · 694 阅读 · 0 评论 -
golang 中channel (管道)的使用
go 管道的使用什么是管道管道(Channel)是Go语言中比较重要的部分,经常在Go中的并发中使用,channle 本质就是一个数据结构-队列数据是先进先出【FIFO : first in first out】线程安全,多 goroutine 访问时,不需要加锁,就是说 channel 本身就是线程安全的channel 有类型的,一个 string 的 channel 只能存放 string 类型数据。类似 unix 使用的pipe()管道的定义var chanName chan E原创 2022-01-23 09:43:09 · 1160 阅读 · 2 评论 -
golang 开发环境部署
首先下载go 开发的sdk ,进行安装安装完以后,特别需要注意需要设置环境变量go version需要根据实际安装情况设置系统环境变量:window 安装go sdk 过程window环境设置go 环境变量原创 2022-01-22 21:25:44 · 328 阅读 · 0 评论