![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Golang
文章平均质量分 50
Codex_97
计算机爱好者。!
展开
-
golang使用channel交替打印
要求每个函数起一个goroutine,请按照dog,cat,fish的顺序,打印四次,输出到控制台。原创 2023-04-23 10:20:08 · 326 阅读 · 0 评论 -
【算法】golang实现Linux的Tree命令(简易版)
通过递归实现打印当前或指定路径下文件的层级结构,暂未实现层级限制选项原创 2022-10-14 15:59:03 · 308 阅读 · 0 评论 -
Golang源码学习(一)waitGroup实现原理
WaitGroup提供了简洁易用的协程编程接口原创 2022-10-03 19:32:32 · 726 阅读 · 0 评论 -
Thrift_01——简介:远程过程调用协议
一、RPC (Remote produce call)远程过程调用协议特点:使用自定义的TCP协议,请求报文体积小,基于Thrift可以实现高效的二进制传输,提高了传输性能,一般都会自带负载均衡,能做到自动通知,不会影响上游。二、远程调用的步骤:一次远程的调用经历了一下10个步骤:1.调用客户端以本地方式调用远程服务2.client stub将请求(方法和参数)组装成网络消息3.client stub找得到服务器地址,将消息传送到远程主机4.server stub得到传送过来的请求,进行解码原创 2020-07-11 20:52:57 · 331 阅读 · 0 评论 -
ο 不是o,开发中希腊字母捣什么乱?探明字符串string转为字节数组后,字节数组内元素的含义
一、背景&经历今天帮女朋友看一段html代码:<html><head></head><body><div>用户名: <input type="text" id="name" > <br><button οnclick="test()">提交</button>...原创 2020-03-10 22:43:35 · 520 阅读 · 0 评论 -
Golang时间包的“坑” time.Parse
开发过程中,无意发现的bug首先看一段代码:func main() { st := "2019-11-21 11:59:01" fmt.Printf("%s\n", st) t, _ := time.Parse("2006-01-02 15:04:05", st) fmt.Println(t.Unix()) tt := time.Unix(t.Unix(), 0) fmt.P...原创 2020-02-27 21:41:54 · 8738 阅读 · 0 评论 -
Golang之单元测试
golang提供了极为简洁的编写单元测试的方式,只需几行代码,即可轻松创建出一个测试用例,并且可以直接运行。1.testing单元测试使用testing可以提供自动化的测试支持,通过go test 命令能够执行形如一下结构的函数:func TestXXX(t *testing.T)XXX可以是任何的字符串,通常为被测试的方法名。其中的*testing.T包含测试打印测试日志、输出断...原创 2020-01-07 21:58:08 · 535 阅读 · 0 评论 -
golang并发编程——wg.WaitGroupWrapper
首先看一段程序:package mainimport "fmt"func main() { for i := 1; i <= 10; i++ { //并发计算每个数的立方数 go func() { fmt.Println(i * i * i) }() }}点击运行程序后,发现程序只解结束,没有输出任何内容:这是因为main函数没有等待刚刚启动的协程...原创 2019-12-30 22:09:24 · 1594 阅读 · 0 评论 -
golang的初始化
Go程序的初始化总是从main包下的main方法开始的,如果main包中引入了其他的包,则会首先导入其他的包,并执行对应包中的inti()方法,若只需要某个包中的init函数,不需要其中的其他方法则可以通过以下方式实现:_ "net/http"Go文件的初始化顺序:1 从main方法开始,若包含其他的包,首先引入其他包2 若其他包也引用了别的包,则首先引入其他的包,然后创建和初始化这个包...原创 2019-12-09 22:01:04 · 389 阅读 · 0 评论 -
Golang 中redigo连接池的初始化参数含义
type Pool struct { // Dial is an application supplied function for creating and configuring a // connection. // // The connection returned from Dial must not be in a special state // (subscribed ...原创 2019-10-23 18:26:44 · 843 阅读 · 0 评论 -
Golang数据库操纵对IN语句的支持
在实际的工程项目中,SQL通常使用预编译的形式进行执行操纵,可以有效的防止SQL注入的风险,提高编码的规范性。golang中使用sqlx进行sql查询的时候,在使用in语句在一个集合中查询的时候,若使用预编译形式则通常有两种形式:方法一:使用语言的for语句循环生成SQL语句中的“?”,类似这样:list:=[]int{1,2,4,66}sql:="select * from books...原创 2019-10-23 13:18:59 · 2234 阅读 · 0 评论 -
map[string]interface{} 取值&类型转化问题
map[string]interface{}类型的map,在取值的时候,可以使用如下方式避免出现panic:m := make(map[string]interface{})x:=m[“notExistsKey”].(int) //若key不存在或者类型不为期待类型则会导致panicx,ok:=m[“notExistsKey”].(int) //可以通过判断ok,确定是否存在指定类型的...原创 2019-10-08 21:56:38 · 10539 阅读 · 0 评论 -
Redis之Pipeline使用
简介Pipeline(管道),redis在实际的业务应用中,可以通过pipeline提高吞吐量,提高redis的吞吐量,减少访问redis的次数。使用目的一次业务中,可能会有频繁的redis访问操作,若每一次都去请求一次redis服务器,则会导致系统的延时较高。通过使用管道,可以合并多次redis操作,过程中不需要等待请求的回复,在最后再一次性读取多个redis执行结果。普通请求是同步...原创 2019-10-08 20:58:21 · 355 阅读 · 0 评论 -
Golang的sort使用总结
golang的sort在封装之后还挺好用的,但是封装略微有点繁琐。首先需要被排序的数组声明一个别名:然后需要该类型实现三个方法:func (s StuScores) Len() intfunc (s StuScores) Swap(i, j int)func (s StuScores) Less(i, j int) bool 实现完毕后就可以使用以下的方法进行排序操作:sort.S...原创 2019-09-11 22:05:57 · 444 阅读 · 0 评论 -
Golang学习(一)关键字和保留字/数组
Go语言中会使用到的 25 个关键字或保留字:break default func interface selectcase defer go map structchan else goto package switchconst fallthrough if range typecontinue for import return var之所以刻意地将 Go语言中的关键字保持的这...原创 2019-07-12 11:15:08 · 383 阅读 · 0 评论 -
Golang 插件cobra使用总结
Cobra既是用于创建强大的现代CLI应用程序的库,也是用于生成应用程序和命令文件的程序。1.启用方式:go run main.go [-flag1 {参数1} ] [-flag2 {参数2} ]例如:go run main.go push -t "123"2.主要编程模式var rootCmd = &cobra.Command{ Use: "rootCmd", S...原创 2019-08-02 17:53:22 · 1415 阅读 · 0 评论 -
Golang并发编程:使用sync.WaitGroup实现线程的等待
首先看如下的代码:func main() { go func() { fmt.Println("123") }() go func() { fmt.Println("ABC") }()}发现最后控制台没有任何输出,如图:可以使用通道解决:func main() { ch := make(chan int) count := 2 go func() {...原创 2019-08-05 15:21:14 · 533 阅读 · 0 评论 -
Golang常用类型转化
其他类型转化为String使用fmt.Sprintf("%d" , x) 转化常用的占位符如下:使用strconv转化://string 转为inti, err := strconv.Atoi(s) String转为其他类型有两个函数可以实现类型的互转1,FormateInt(int , base int) string2, Itoa(int) string//...原创 2019-08-06 13:14:01 · 144 阅读 · 0 评论 -
Golang中对字符串string的相关操作
几乎任何程序都离不开文本(字符串)。文本操作是最常用的一个内容。 golang中拥有string的内置类型,可以使用与普通slice类型相似的性质。1.简介strings包提供了很多操作字符串的简单函数,通常一般的字符串操作都可以在这个包中找到。strconv 包提供了基本数据类型和字符串之间的转换。在Go 中,没有隐式的类型转换,一般的类型可以使用类型名的方式进行转换,例如:int64...原创 2019-08-13 21:18:57 · 524 阅读 · 0 评论 -
Golang返回值命名的意义
Golang语言的函数可以返回多个返回值,而且可以为每个返回值指定一个名称,如下:func MySqrt2(f float64) (ret float64, err error) { if (f < 0) { //then you can use those variables in code ret = float64(math.NaN()) ...原创 2019-08-07 16:02:50 · 633 阅读 · 0 评论 -
Golang中defer的“坑”
1.defer的执行时机defer的官方定义的为:包裹defer的函数返回时包裹defer的函数执行到末尾时所在的goroutine发生panic时2.defer 的执行顺序defer 的执行顺序为LIFO原则,一段程序中后执行的defer代码段会在程序return的时候会优先执行。defer在匿名返回值和明明返回值函数中的不同表现。。。。。...原创 2019-08-23 21:35:28 · 346 阅读 · 0 评论 -
对Golang的nil的理解和认识
1.简介按照Go语言的规范,任何类型在未初始化的时候都对应一个零值:布尔型零值为:false整型零值为:0字符串的零值为:""而指针,函数,interface,slice,channel,map的零值均为nilGo文档中说明:nil是预定义的标识符,代表指针,通道,函数,接口,映射或者切片的零值,并并不是Go的关键字之一。还有,nil只能赋值为以上的几个类型,若赋值给基础类型,则会引...原创 2019-08-27 21:48:26 · 732 阅读 · 2 评论 -
【实例】省市县地区XLXS转化为XML格式,基于golang语言
输入是一个xlxs文件,包含所有省市县及其关系和名称要求将至转化为xml并能反应对应的包含关系简介xlxs文件内容如下:包含四个字段,但最后一个字段用不到。要求转化为形式如下的xml文件:开发步骤1.选定语言这里使用了golang语言,常用语言的步骤一定是类似的2.大致思考开发的主要过程:经过思考应该包含以下几个部分:1)解析源文件2)在内存中进行调整,对层级关系进...原创 2019-09-10 22:18:12 · 575 阅读 · 0 评论 -
Golang学习(二)time包相关
1.获取当前时间的时间戳time.Now().Unix()2.日期时间格式化str格式化时间`fmt.Println (time.Now().Format("2006-01-02 15:04:05"))时间戳转str格式化时间t:= time.Now()fmt.Print(time.Unix(t.Unix() , 0).Format("2006/01/02 (15:0...原创 2019-07-13 11:19:53 · 87 阅读 · 0 评论