
Golang
golang
飞乐鸟
你必须变成自己希望的样子,世界才能变成你想要的样子!
展开
-
Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.2
pom文件添加: <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.2</version> <configuration> <skipTests>true&原创 2022-02-16 17:24:32 · 346 阅读 · 0 评论 -
Golang 在 Mac、Linux、Windows 下如何交叉编译
Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序。GOOS:目标平台的操作系统(darwin、freebsd、linux、windows)GOARCH:目标平台的体系架构(386、amd64、arm)具体组合,详见Windows 下编译 Mac 和 Linux 64位可执行程序SET CGO_ENABLED=0SET GOOS=darwinSET GOARCH=amd64go build main.goSET CGO_ENABLED=0SET GOOS=原创 2023-11-07 21:30:00 · 841 阅读 · 0 评论 -
Golang之json.Marshal();统计字符串包含英文“.“的个数
func Marshal(v interface{}) ([]byte, error) { e := newEncodeState() err := e.marshal(v, encOpts{escapeHTML: true}) if err != nil { return nil, err } buf := append([]byte(nil), e.Bytes()...) encodeStatePool.Put(e) return buf, nil}参数为interfac.原创 2020-11-25 14:21:55 · 297 阅读 · 0 评论 -
golang 可执行文件help设置
pflag.Usage实现自定义使用帮助定义参数var ( host string user string port int password string )pflag是Go flag包的一个替代插件,实现了POSIX / GNU风格的flag,基本使用于"flag"包基本相同 github.com/spf13/pflag 默认标志位:--pflag.Usage = func() { ...原创 2020-12-02 16:43:59 · 822 阅读 · 0 评论 -
Golang 导入csv文件,千万级数据导入优化
Golang解析CSV文件读取多文件夹,可以开启多个协程 var wg sync.WaitGroup for index, dir := range Dirs { wg.Add(1) go readDir(dir) } wg.Wait()遍历csv数据,拼接insert into,少量数据看不出啥问题,大量数据就有点残废了,10w数据耗时5min,经优化批量插入,耗时竟3s!!!看到差距了吧当数据达到百万级别,就有点崩溃了wsarecv: an exis原创 2020-11-28 10:34:25 · 1819 阅读 · 2 评论 -
Golang之数组、切片,有何区别
初始化数组 var arr1 [4]int //数组会初始化为int类型的零值 var arr2 = [4]int{1, 2} //使用指定的初始值完成初始化 var arr3= [4]string{"北京", "上海", "天津"} //使用指定的初始值完成初始化 arr4 := [3]int{1,2,3} //指定固定长度,不可修改 arr5 := [...]int{1,2,3} ..原创 2020-11-28 14:59:38 · 156 阅读 · 0 评论 -
Golang go build 不同系统下的可执行文件
Golang 支持在一个平台下生成另一个平台可执行程序的交叉编译功能go build,是我们非常常用的命令,它可以启动编译,把我们的包和相关的依赖编译成一个可执行的文件//查看环境变量go env*注意*两个重要的环境变量GOOS和GOARCHGOOS指目标操作系统:darwinfreebsdlinuxwindowsandroiddragonflynetbsdopenbsdplan9solarisGOARCH指的是目标处理器的...原创 2020-11-30 09:44:13 · 1908 阅读 · 1 评论 -
Golang 并发、事务处理
并发 Golang使用sync.WaitGroup来实现并发任务的同步:sync.WaitGroup内部维护着一个计数器,计数器的值可以增加和减少。例如当我们启动了N 个并发任务时,就将计数器值增加N。每个任务完成时通过调用Done()方法将计数器减1。通过调用Wait()来等待并发任务执行完,当计数器值为0时,表示所有并发任务已经完成。方法 注释 (wg *WaitGroup) Add(delta int) 计数器+delta func ..原创 2020-11-28 11:29:23 · 2013 阅读 · 0 评论 -
Docker OCI runtime exec failed: exec failed: container_linux.go:344: starting container process caus
docker进入容器:docker exec -it fda986ac8985 /bin/bash解决办法:docker exec -it fda986ac8985 /bin/sh或者docker exec -it fda986ac8985 bash或者docker exec -it fda986ac8985 sh原创 2021-07-26 16:20:40 · 286 阅读 · 0 评论 -
Golang Windows系统使用make build
gcc -v找到上面mingw64/bin目录,复制mingw32-make.exe一份,改成make.exe ,即可。原创 2023-11-08 08:30:00 · 280 阅读 · 0 评论 -
三分钟掌握Go mod常用与高级操作
环境Windows10 GO:1.131. 开启Go module1.11和1.12版本将下面两个设置添加到系统的环境变量中GO111MODULE=onGOPROXY=https://goproxy.io1.13版本之后需要注意的是这种方式并不会覆盖之前的配置,有点坑,你需要先把系统的环境变量里面的给删掉再设置go env -w GO111MODULE=ongo env -w GOPROXY=https://goproxy.cn,https://goproxy.io,转载 2021-01-25 09:53:14 · 397 阅读 · 0 评论 -
golang 几种字符串的拼接方式
最近在做性能优化,有个函数里面的耗时特别长,看里面的操作大多是一些字符串拼接的操作,而字符串拼接在 golang 里面其实有很多种实现。实现方法1.直接使用运算符func BenchmarkAddStringWithOperator(b *testing.B) { hello := "hello" world := "world" for i := 0; i < b.N; i++ { _ = hello + "," + world }}转载 2021-01-14 15:42:16 · 154 阅读 · 0 评论 -
golang-for range的坑
golang中,常用的遍历方式有经典的for循环和for range两种。实际上,使用 for range 语法的控制结构最终应该也会被golang的编译器转换成普通的 for 循环,所以for range实际上会被先转换成经典的for循环再真正执行,而正是这个转换过程常常会留坑。下面简单表示这个转换过程:for range代码是:for index, value := range t_slice { original body}转换后:len_temp := len(t_slic转载 2021-01-12 16:44:06 · 1019 阅读 · 0 评论 -
golang 中string和int类型相互转换
golang字符串和各种int类型之间的相互转换方式:string转成int: int, err := strconv.Atoi(string) string转成int64: int64, err := strconv.ParseInt(string, 10, 64) int转成string: string := strconv.Itoa(int) int64转成string: string := strconv.FormatInt(int64,10) ...原创 2021-01-11 15:36:16 · 198 阅读 · 0 评论 -
golang 使用 iota
iota是golang语言的常量计数器,只能在常量的表达式中使用iota在const关键字出现时将被重置为0(const内部的第一行之前),const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)const ( a = iota b c d ) fmt.Println(a) //0 fmt.Println(b) //1 fmt.Println(c) //2 fmt.Println(d) //3const ..原创 2020-12-02 18:14:43 · 135 阅读 · 0 评论 -
golang make build 报错:fatal: No names found, cannot describe anything
原因:本地仓库(远程仓库)没有可用的taggit describe应该返回v1.0.0-5-gb99f464fv1.0.0-表示最近的tag名 5-代表当前commit相对于tag(v4.0.0),已有5个commit g-只是一个标识符,b99f464f代表当前的commit id...原创 2020-12-03 10:31:22 · 3532 阅读 · 0 评论 -
Golang 微框架之Gin
"net/http""github.com/gin-gonic/gin" restful路由 : 冒号加上一个参数组成路由参数,可以使用c.Params的方法获取值访问:* 匹配访问: query string query string用?以后连接的key1=value1&key2=value2没有传参提供默认值有参数则覆盖默认值参数不存在则返回空字符串...原创 2020-12-03 20:35:28 · 205 阅读 · 0 评论 -
设置 GoLand 保存时自动格式化
File --> Settings --> Tools --> File Watchers --> +(Add) --> go fmt原创 2021-01-08 16:40:09 · 1002 阅读 · 0 评论 -
golang import里下划线的作用
示例:import 下划线(如:import _ github.com/)的作用:当导入一个包时,该包下的文件里所有init()函数都会被执行,然而,有些时候我们并不需要把整个包都导入进来,仅仅是是希望它执行init()函数而已。这个时候就可以使用 import _ 引用该包。即使用【import _ 包路径】只是引用该包,仅仅是为了调用init()函数,所以无法通过包名来调用包中的其他函数。...原创 2021-01-11 10:52:39 · 440 阅读 · 0 评论