随笔分类 - Golang
Golang填坑埋坑
摘要:原文链接:> https://www.zhoubotong.site/post/95.html 某些业务场景可能需要实现两个或者多个map 的交差并集,一下举个简单的demo, 思路其实并不复杂: package main import "fmt" // 并集 func union(m1, m2 m
阅读全文
摘要:原文链接:https://www.zhoubotong.site/post/94.html 说下背景吧,大家在开发中可能在不同的目录(package)下定义了相同的struct(属性参数完全一样如名字、个数和类型),在方法调用传参数的时候,可能是用到了其中某一个struct的引用。 那么这里就牵扯到
阅读全文
摘要:原文链接:https://www.zhoubotong.site/post/91.html 通常树形菜单的实现基本就是递归调用,大部分场景毕竟这种数据不多,性能倒是并不突出, 下面给个demo,有兴趣的朋友可以看看: 新建一个city表: CREATE TABLE `city` ( `id` int
阅读全文
摘要:原文链接:https://www.zhoubotong.site/post/86.html 这里介绍下接口interface嵌套的用法,大家知道Go语言中不仅仅结构体与结构体之间可以嵌套,接口与接口之间也可以嵌套,通过接口的嵌套我们可以定义出新的接口。 Golang 的接口嵌套,其实也就是一个接口里
阅读全文
摘要:原文连接:https://www.zhoubotong.site/post/78.html 开发中对于http请求是经常遇到,一般可能网络延迟或接口返回超时,对于发起客户端的请求, 除了设置超时时间外,请求重试是很有必要考虑的,我们不用重复造轮子,可以使用 https://github.com/ra
阅读全文
摘要:> 原文连接:[https://www.zhoubotong.site/post/67.html](https://www.zhoubotong.site/post/67.html) Go 标准库的net/url包提供的两个函可以直接检查URL合法性,不需要手动去正则匹配校验。 下面可以直接使用Pa
阅读全文
摘要:原文链接:https://www.zhoubotong.site/post/60.html 之前写过一篇文章,Go map定义的几种方式以及修改技巧,今天发现还可以深入探讨下开发中容易被忽视遗漏的问题, 以下以map为例,演示大家日常开发中可能存在的问题。 Map的Value的赋值 我们来看下下面的
阅读全文
摘要:原文链接:https://www.zhoubotong.site/post/58.html 网上关于channel的使用有很多介绍,这里不在阐述,这里主要是记录下开发中,可能存在使用channel不当造成的问题总结下, 说道这里,还是总结下channel的几个特性吧: 给一个 空 channel发送
阅读全文
摘要:原文链接:https://www.zhoubotong.site/post/57.html 大家知道Select 是 Go 中的一个控制结构,每个 case 必须是一个通信操作,要么是发送要么是接收操作。 select是 随机执行一个可运行的 case。 如果没有 case 可运行,程序可能会阻塞,
阅读全文
摘要:原文链接:https://www.zhoubotong.site/post/51.html 什么是接口型函数?顾名思义接口函数指的是用函数实现接口,这样在调用的时候就会非常简便,这种方式适用于只有一个函数的接口。 这里以迭代一个map为例,演示这一实现的技巧。 常规接口实现 defer语句用于延迟函
阅读全文
摘要:原文链接:http://www.zhoubotong.site/post/50.html defer语句用于延迟函数调用,每次会把一个函数压入栈中,函数返回前再把延迟的函数取出并执行。延迟函数可以有参数: 延迟函数的参数在defer语句出现时就已确定下来(传值的就是当前值) return先赋值(对于
阅读全文
摘要:原文链接:http://www.zhoubotong.site/post/45.html 开箱即用 什么叫开箱即用呢?因为Go语言的零值让程序变得更简单了,有些场景我们不需要显示初始化就可以直接用,举几个例子: 切片,他的零值是nil,即使不用make进行初始化也是可以直接使用的,例如: packa
阅读全文
摘要:原文链接:http://www.zhoubotong.site/post/44.html 使用Golang的sort包用来排序,包括二分查找等操作。下面通过实例代码来分享下sort包的使用技巧: package main import ( "fmt" "sort" ) func main() { i
阅读全文
摘要:原文链接:http://www.zhoubotong.site/post/36.html 标准库专门提供了一个包 strings 进行字符串的操作,随着go1.18新增的 Cut 函数,字符串处理也更加方便了。 Cut 函数的签名如下: func Cut(s, sep string) (before
阅读全文
摘要:原文链接:http://www.zhoubotong.site/post/34.html 上次写博客至今有段时间了,这些日子,认真过,努力过,职场中不管有哪些让人失意或不快的事,终归到底,是自己不够强大。。。 好吧,新的一年,不磨磨唧唧了,一般处理xss漏洞使用正则匹配,再次分享一个golang s
阅读全文
摘要:原文链接:http://www.zhoubotong.site/post/24.html直入正题,我们看下以下代码: package main import ( "encoding/json" "fmt" ) func main() { //第一种声明 var language map[string
阅读全文
摘要:原文链接:http://www.zhoubotong.site/post/23.html 遍历结构体 如何实现遍历结构体字段? 好吧,言归正传!举个例子:demo1: package main import ( "fmt" "reflect" ) type Student struct { name
阅读全文
摘要:原文链接:http://www.zhoubotong.site/post/19.html 大家可能经常会用到类似如下代码片段: package main import ( "fmt" "sync" "time" ) func main() { sli := []int{0, 1, 2, 3, 4,
阅读全文
摘要:原文链接: http://www.zhoubotong.site/post/17.htmlGo的error比较灵活.但是自身对error处理的机制有不太好用,我们可以自定义错误输出: 只要所有实现了 Error() 方法的对象都可以, 这里给个比较简单的demo,后续整理一个error的优化封装:
阅读全文
摘要:博客原文链接:http://www.zhoubotong.site/post/15.html Sort包实现了四种基本排序算法:插入排序、归并排序、堆排序和快速排序。 但是这四种排序方法是不公开的,它们只被用于sort包内部使用。所以在对数据集合排序时不必考虑应当选择哪一种排序方法,只要实现了sor
阅读全文