The selected directory is not a valid home for Go Sdk

Go 

最近使用Go从原来的1.14升到了1.21,结果发现Goland中未读出Go Sdk。 后面网上找了找,发现是我按装的go 1.21版本的zversion.go文件不知道什么情况出了点问题。 找到go1.21.0的GOROOT目录下的/src/runtime/internal/sys/zversio

Go Modules 更新所有的依赖包

Go 

go get -u && go mod tidy go get -u 会更新所有的包,tidy 会重新整理 go.mod 文件。 或 go get -u all 会更新所有包依赖包括测试依赖。 本文参考:https://learnku.com/go/t/63324

Go无限缓存channel

Go 

需求 最近在弄一个游戏的gate网关转发服务器,服务器之间使用的是nats通讯,gate的作用是接收客户端发来的消息转发到对应的服务器上,并从nats上获取游戏服务器发送给客户端的消息并转发给客户端。前面接收还好处理,因为都是发布订阅模式的消息,收到消息直接向nats上扔就行了。但转发服务器来的消息

Go channel多路复用

Go 

1. 为什么需要多路复用 Go 程序在并发处理一些任务的时,会为每一个任务创建一个 goroutine,然后需要根据不同的 goroutine 的返回的结果做不同的处理。 如果按照通常的做法,分别获取每个 channel 的结果: taskCh1 := make(chan bool) taskCh2

Go channel管道的基本使用

Go 

Channel是Go中的一个核心类型,你可以把它看成一个管道,通过它并发核心单元就可以发送或者接收数据进行通讯(communication)。 Channel类型 和 map 类似,channel 也一个对应 make 创建的底层数据结构的引用。当我们复制一个 channel 或用于函数参数传递时,

Go切片遍历

Go 

顺序遍历 对于切片的顺序遍历,一般使用range就可以了。 var nums = []int{10,20,30,40,50} for i, value := range nums { // i为索引 // value 为切变值 } 这里有一个问题需要注意一下,如果这里的切片nums不是基本数据

Go判断深度相等DeepEqual

Go 

规则 1.不同类型的值不会深度相等 Values of distinct types are never deeply equal. type S1 struct { Field int } type S2 struct { Field int } func main() {

Go解析html

Go 

在go中可以使用goquery库来解析html,这个有点类似于jQuery的库,提供与 jQuery 相近的接口。 一、安装 go get -u github.com/PuerkitoBio/goquery 二、使用 1. 创建goquery对象 使用NewDocument简单的创建,但不推荐这么

Go读写文件

Go 

读取文件 读取文件一般有三种方式,不同读取模式的优缺点不同。 将文件整个读入内存。效率比较高,占用内存也最高 按字节读取。读取方式比较灵活,若文件较大,可以读取需要的部分 按行读取。一般用于文件日志文件读取 将文件整个读入内存 package main import ( "os" "i

Go json.Unmarshal报错invalid character ' ï' looking for beginning of value

Go 

  从网站上获取的一个json字符串数据,使用json.Unmarshal序列化失败,报错invalid character 'ï' looking for beginning of value。查看json字符串没问题,但是查看byte格式的数据时发现前缀有问题。   在json数据中,可见的第一