go
文章平均质量分 62
长睡将军
归零者诗人,有诗有远方有嘴角向上的你。
展开
-
go基础理论学习
简单介绍下go语言 go语言是谷歌开发的一种编程语言 它具有内置的垃圾回收机制 支持高并发 代码可以编译成单个可执行的二进制文件,不需要运行时环境 go接口 所有接口的父接口是一个空类,interface{}替代任意类型 go泛型 go1.7之前的go泛型实现是使用interface{}替代任意类型,需要使用swich做类型断言判断。1.7之后引入了类似java语言的泛型概念,这种反省概念就是模板<K,V>,在程序运行时需要copy一份模板生成对应类型的方法并写入内存中原创 2021-09-30 16:02:17 · 166 阅读 · 0 评论 -
Go语言中的并发编程
一、并发与并行 并发:同一时间段内执行多个任务 并行:同一时刻执行多个任务 Go语言的并发通过goroutine实现。goroutine类似于线程,属于用户态的线程,我们可以根据需要创建成千上万个goroutine并发工作。goroutine是由Go语言的运行时(runtime)调度完成,而线程是由操作系统调度完成。 Go语言还提供channel在多个goroutine间进行通信。goroutine和channel是 Go 语言秉承的 CSP(Communicating Sequential Pro原创 2021-09-17 23:12:21 · 244 阅读 · 0 评论 -
Go SCP 通信顺序进程模型chan通道
目录 channer定义 写入 chan 读取 chan 关闭 chan 示例 Go语言实现了两种并发模型,一种是我们熟悉的线程与锁并发模型,他是基于共享内存实现的。另一种是Go语言中倡导使用的SCP 通信顺序进程模型,倡导使用通信手段实现共享内存。 在Go语言中倡导使用channel作为gorotine之间同步和通信的手段。在go语言中的线程是并发机制而不是并行机制。 并发机制和并行机制 并发是不同的代码块交替执行,也就是交替可以做不同的事情。 并行是不同的代码块同时...原创 2021-09-07 16:33:29 · 415 阅读 · 0 评论 -
Goland提示Delve的版本太旧,无法debug的处理方式
vscode安装go语言的调试插件,按官方给出的方法很简单,在cmd下执行这个命令: go get -ugithub.com/derekparker/delve/cmd/dlv 如果下载报如下错误: go get -v -u -x github.com/derekparker/delve/cmd/dlv github.com/derekparker/delve (download) cd C:\Users\wangb\go\src\github.com\derekparker\delve git.原创 2020-07-09 11:22:56 · 2011 阅读 · 0 评论 -
Golang对象切片按照属性分类成Map
在Golang开发中,我们有时候需要实现像Java里面的stram -> group 类似的功能。则可以用如下实例完成。 package main import ( "fmt" "reflect" ) type Student struct { Name string `json:"name"` Age uint `json:"age"` } type Teacher struct { Name string `json:"name"` Gender uint `json原创 2021-08-12 17:48:17 · 885 阅读 · 0 评论 -
golang并发 goroutine
goroutine是Go并行设计的核心。goroutine说到底其实就是线程,但是它比线程更小,十几个goroutine可能体现在底层就是五六个线程,Go语言内部帮你实现了这些goroutine之间的内存共享。执行goroutine只需极少的栈内存(大概是4~5KB),当然会根据相应的数据伸缩。也正因为如此,可同时运行成千上万个并发任务。goroutine比thread更易用、更高效、更轻便。 goroutine是通过Go的runtime管理的一个线程管理器。goroutine通过go关键字实现了,其实就原创 2021-08-10 17:21:08 · 281 阅读 · 0 评论 -
Go语言读取线上文件的内容
在我们实际工作中,我们有直接读取不同云服务机器上的文件内容的需求。通常我们的做法是将云服务器上的文件下载到本地,然后使用io读取文件内容,然后再删掉这个临时文件。但这样做对于我们的直接目的来说是有了额外的消耗。所以,我们的做法是直接使用Http请求该文件,然后直接读取Body流中的数据即可。 代码如下 func ReadTxtData(filePath string) map[string]interface{}{ resp, err := http.Get(filePath) defer r原创 2021-07-16 15:16:40 · 1514 阅读 · 0 评论