Golang
代码一天不写我浑森蓝廋
防民之口,甚于防川。川壅而溃,伤人必多,民亦如之。
展开
-
Golang zip流式解析器
作为替代品,我们可以使用这个库 https://github.com/zhyee/zipiterator。当然,该包也存在一些限制,比如只能顺序读取,不支持并发读取等等。提供了对zip压缩包的解析功能,主要的。,则可以让这些解压缩方法保持一致性。参数,如果有一个zip包也只需要。参数,另外还要提供文件大小。方法签名有很大差别,比如说。方法基本只需要一个普通的。需要提供一个比较特别的。原创 2023-02-17 17:04:08 · 674 阅读 · 0 评论 -
Golang实现io.Reader的重复读取
【代码】Golang实现io.Reader的重复读取。原创 2022-10-19 14:56:42 · 2750 阅读 · 0 评论 -
深入探讨go.mod +incompatible
go mod 认为如果一个module的两个不同版本之间引入路径相同,则它们必须是相互兼容的,而不同的大版本通常意味着是不兼容的,所以引入路径也不该相同,通过在模块路径上加上大版本后缀,这样就可以同时使用同一个模块的多个不同大版本。文件,以便使用该模块的人能正常更新最新版本,如果后续迭代出现大的变动已经无法向后兼容,这时应该升级一个大版本,并添加。文件,同时模块path也要加上新的大版本后缀,使用者要使用该新版本则需要导入新的path。两个大版本,go mod不允许存在版本后缀,这是因为。.........原创 2022-09-01 02:17:59 · 2471 阅读 · 0 评论 -
go标准库httputil.ReverseProxy简单介绍和使用避坑
很久没水博客了,今天就来水一篇,说说go标准库的httputil.ReverseProxyhttputil.ReverseProxy顾名思义,http的反向代理,可以类比nginx的反向代理功能httputil.ReverseProxy 定义了一组方法让使用者去实现,主要有这几个Director最核心的方法, 我们可以在这里对请求进行相应的修改,比如设置请求目标的地址,对原有请求头进行增删改,以及对请求体进行处理等等操作。ModifyResponse可以让我们对响应的结果进行处理,比如修改、读取响应原创 2022-06-12 18:36:43 · 6098 阅读 · 1 评论 -
Golang用for...range遍历字符串的奇怪表现
我们知道Golang字符串可以用操作[]byte相同的方式来操作,可以用下标来访问,也可以取子串,用下标来访问的话,每个元素的类型是个byte(uint8),例如func SubStr(s string, start, length int) string { return s[start:start+length]}func main() { str := "abcde12345" char := str[3] fmt.Println(char, reflect.ValueOf(char)原创 2021-12-27 22:00:35 · 1557 阅读 · 1 评论 -
GoLang复制/拷贝一个切片
使用内建方法copyfunc CopySlice(src []int) []int { if src == nil { return nil } dup := make([]int, len(src)) copy(dup, src) return dup}使用append方法func CopySlice(src []int) []int { return append([]int(nil), src...)}主要说的是使用append方法,语法简洁,golang源码中.原创 2021-12-19 20:21:06 · 1094 阅读 · 0 评论 -
Golang判断一个对象是否实现了某个方法
可以使用Golang中的类型断言,判断对象是否实现了某个接口package maintype Runner interface { Run() Eat()}type Dog struct {}func main() { d := &Dog{} // 判断对象d是否实现了Runner接口 if r, ok := interface{}(d).(Runner); ok { r.Run() }}如果没有Runner或者不知道有这样的一个接口,我们也可以使用临时创建的匿原创 2021-10-29 21:47:43 · 1226 阅读 · 0 评论 -
go get或go mod tidy报错 fatal: could not read Username for
go get git.xxxxx.net/CPC/protocol: module git.xxxxx.net/CPC/protocol: git ls-remote -q origin in /Users/admin/go/pkg/mod/cache/vcs/b23efdb68de4fde955075014c720200fc58c6052bbf3cd57ed65bf341c19c359: exit status 128:fatal: could not read Username for ‘https.原创 2021-10-20 15:59:28 · 11310 阅读 · 0 评论 -
golang未初始化的slice和初始化为空的slice的区别简析
先看两种形式的slice定义// 定义未初始化的slicevar s1 []string// 通过字面量形式定义并初始化为空slicevar s2 = []string{}// 通过make函数定义并初始化为空slicevar s3 = make([]string, 0, 0)我们知道,在golang中切片是对底层数组中的连续一部分存储空间的引用,是类似一种数组指针的存在,例如我们可以直接像打印一个指针所指向的地址的形式来打印切片 // 先来看%p 打印格式的用法 var arr =原创 2021-07-20 22:47:41 · 2471 阅读 · 0 评论 -
golang中error接口方法Error和Stringer接口方法String优先级问题
golang中当打印一个变量时,如果该变量实现了String()方法,则会默认调用该方法来获得字符串表示,import "fmt"type Object struct { Name string}func (u *Object) String() string { fmt.Println("call String func") return u.Name}func main() { u := &Object{Name: "南山彭于晏"} fmt.Println(u)原创 2021-05-09 13:26:21 · 483 阅读 · 0 评论 -
中国上市互联网公司市值排名
排名 公司 市值(单位:亿美元) 1 阿里巴巴 4594.26 2 腾讯 3992.62 3 美团 728.56 4 拼多多 482.26 5 京东 459.40 6 网易 370.50 7 百度 364.71 8 好未来 252.97 9 腾讯音乐...原创 2019-11-05 11:48:27 · 28552 阅读 · 0 评论 -
goland-2019.1下载和安装
goland-2019.1下载地址(Windows):https://download.jetbrains.com/go/goland-2019.1.4.exe?_ga=2.50129894.138437056.1613964523-1675887879.1613964523goland-2019.1下载地址(Mac):https://download.jetbrains.com/go/goland-2019.1.4.dmg?_ga=2.16755318.138437056.1613964523-167原创 2021-02-22 12:34:35 · 1231 阅读 · 0 评论 -
vim安装go插件vim-go和gocode,支持代码高亮、代码提示和语法检查等功能
vim是linux系统下常用的代码编辑器,默认情况下不支持go的代码高亮和语法检查,不过可以通过安装vim插件来支持go的开发,golang官方也向我们推荐了一些vim的go插件(具体哪些插件请查看https://github.com/golang/go/wiki/IDEsAndTextEditorPlugins)接下来主要演示vim-go插件的安装原创 2017-11-17 15:41:28 · 39870 阅读 · 3 评论 -
源码编译安装go,ERROR: Cannot find /root/go1.4/bin/go
go的源码安装非常简单,只需运行源码包中src/all.bash,等到出现 ALL TESTS PASSED 字样就安装好了,但是在源码安装1.5版本以上的go时会报 ERROR: Cannot find /root/go1.4/bin/go 这个错误,这是由于go 1.5版以后的编译安装需要1.4版本go,所以如果想要通过源码方式安装高版本go,必须先安装好1.4版本的go。原创 2017-11-07 17:57:16 · 11810 阅读 · 3 评论