![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
go
从运维到开发
stay foolish
展开
-
golang数据流输入 ,统计重复行的数量
需要用到的包,bufio想要查看test.txt有多少行重复的并打印出来,test.txt内容如下:11111111144442244443419999222221114444//dup1.go内容package mainimport ( "bufio" "fmt" "os")//打印文件中重复出现的行,以重复次数开头,map,bufio//执行方法:dos也是用管道: type test.txt|dup1.exefunc main()原创 2021-08-20 15:36:41 · 182 阅读 · 0 评论 -
windows goland gomod模式总是无法成功导入第三方包
因为我的项目不是放在同一个大的gopath路径下,所以把所有项目挪到了同一个大的路径下,然后开启GO111MODULE=on然后进入到大项目下的小目录进行go mod初始化,我的项目目录如下:包含了一个go_learning的项目,一个smart_xxx的项目然后进入go_learning目录下,C:\Users\IsBean\GolandProjects\go_learning>go mod init go_learningC:\Users\IsBean\GolandProjects\g原创 2021-07-09 10:26:55 · 1258 阅读 · 0 评论 -
go benchmark测试
测试字符相加,两种方法,buffer相加明显快很多benchmark_test.gopackage benchmarkimport ( "bytes" "testing")func BenchmarkConcatStringByAdd(b *testing.B) { elem := []string{"1", "2", "3", "4", "5"} b.ResetTimer() for i := 0; i < b.N; i++ { ret := "" for _, v原创 2021-07-08 14:50:59 · 199 阅读 · 0 评论 -
第一个go单元测试
文件目录:被测试的函数放在Squre.go里面:Squre.gopackage Unittestfunc Squre(op int) int { return op * op}测试代码块:Squre_test.gopackage Unittestimport "testing"func TestSqure(t *testing.T) { inputs := [...]int{1, 2, 3} expect := [...]int{1, 4, 9} for i := 0原创 2021-07-08 11:09:36 · 61 阅读 · 0 评论 -
go 处理一主多子协程的sync.WaitGroup
package mainimport ( "fmt" "sync")func worker(x int, wg *sync.WaitGroup) { //用于函数返回之前,调用的函数,参考博客https://blog.csdn.net/u011525168/article/details/88401991 //用于完成一个子协程减1的计数器 defer wg.Done() for i := 0; i < 5; i++ { fmt.Println(i) }}.原创 2021-05-26 16:14:16 · 105 阅读 · 0 评论 -
go 模拟信道锁
package mainimport "fmt"func main() { //没有传入长度,默认的容量为0 done := make(chan bool) go func() { for i := 0; i < 5; i++ { //只会输入0,1,因为信道done的cap为0,第一次输入后就堵塞了,因为只会打印2次,第二次无法输入 fmt.Println(i) done <- true } }() <-done}执行结果:.原创 2021-05-26 14:28:35 · 137 阅读 · 0 评论 -
go 遍历信道
package mainimport ( "fmt")func fiber(mychan chan int) { n := cap(mychan) x, y := 1, 1 for i := 0; i < n; i++ { mychan <- x x, y = y, x+y } close(mychan)}func main() { pipe := make(chan int, 10) go fiber(pipe) for k := range .原创 2021-05-26 10:36:54 · 146 阅读 · 0 评论 -
go 单向信道
package mainimport ( "fmt" "time")func main() { //定义信道 pipe := make(chan int) //定义一个只写信道 type Sender chan<- int //定义一个只读信道 type Reciver <-chan int //启动一个发信道协程 go func() { //定义一个Sender类型,实则一个为一个信道的sender,我理解为pipe和sender绑定了 var send.原创 2021-05-26 09:58:55 · 154 阅读 · 0 评论 -
Goland下cannot resolve directory
问题描述:通过Termilal查看go env没问题,也能执行go mod tidy,但是即使模块已经下载,代码还是无法识别这些包的路径,原因是没有在Goland里面真正开启go mod模式,解决如下:原来是Goland没有设置开启go mod模式,设置如下...原创 2021-05-24 15:47:16 · 5283 阅读 · 4 评论 -
go 结构体转换为json
package mainimport ( "encoding/json" "fmt" "log")type Movie struct { Title string Year int `json:"released"` Color bool `json:"color,omitempty"` Actor []string}var movies = []Movie{ {Title: "Casablanca", Year: 1942, Color: false, Actor: .原创 2021-03-31 15:43:48 · 1614 阅读 · 0 评论 -
go实现逆序输出
func reverse(l [] int){ for i,j=0,len(l)-1;i<j;i++,j--{ s[i],s[j]=s[i],s[j] }}func main(){ a=[...]int{1,2,3,4,5,6} reverse(a[:]) fmt.Println(a) }原创 2021-03-29 13:59:03 · 811 阅读 · 0 评论 -
go 模拟获得文件的basename
package mainimport ( "fmt" "strings")func basename(s string) string { for i := len(s) - 1; i >= 0; i-- { if s[i] == '/' { s = s[i+1:] break } } for i := len(s) - 1; i >= 0; i-- { if s[i] == '.' { s = s[i+1:] break } }.原创 2021-03-26 15:04:55 · 509 阅读 · 0 评论 -
go 模拟每隔三个字符插入逗号
package mainimport "fmt"func split2(s string) string { n := len(s) if n <= 3 { return s } return split2(s[:n-3]) + "," + s[n-3:]}func main() { var ss string ss = split2("11224s4245") fmt.Println(ss)}原创 2021-03-26 14:55:15 · 506 阅读 · 0 评论