golang
@子非鱼
心之所向,素履以往。
展开
-
Go 借助于内置sort.slice包实现排序
摘要:自定义排序:golang 借助于内置sort.slice包实现排序_汤姆和杰瑞1234的博客-CSDN博客_go sort.slice转载 2022-06-14 16:02:42 · 194 阅读 · 1 评论 -
Go 切片数据相关操作
摘要:golang slice去重 - WalkerWang731 - 博客园原创 2022-03-08 09:12:22 · 160 阅读 · 0 评论 -
Go 单元测试(go-sqlmock)
摘要:go sqlmocks的使用 - 知乎摘要2:如何正确设置模拟行和查询go-sqlmock-大数据-CSDN问答摘要3:go语言单元测试之五:go语言用go-sqlmock和gorm做数据库查询mock_刘宏缔的go森林-CSDN博客_gorm mock摘要:github:GitHub - DATA-DOG/go-sqlmock: Sql mock driver for golang to test database interactions...原创 2022-02-21 11:00:39 · 796 阅读 · 0 评论 -
Go rpc调用
RPC原理图客户端Stub: 客户端存根 服务端Stub: 服务端存根RPC技术架构服务端:server.gopackage mainimport ( "math" "net" "net/http" "net/rpc")type MathUtil struct {}// 该方法向外暴露:提供计算圆形面积的服务func (mu *MathUtil) CalculateCircleArea(req float32, resp *float32) erro...原创 2022-02-13 21:37:05 · 1339 阅读 · 0 评论 -
Go es中使用脚本操作
摘要:官方库:使用go向es进行数据操作脚本 - 紫色飞猪 - 博客园摘要:原创 2022-01-27 15:45:36 · 1873 阅读 · 0 评论 -
Go es的增删改查
摘要:go操作es7的常用增删改查操作_猿职场的博客-CSDN博客原创 2022-01-26 19:26:27 · 1071 阅读 · 0 评论 -
Go bee工具
摘要:beego是源码,负责开发;bee是工具,负责构建和管理项目1.安装bee:go get github.com/beego/bee2.通过bee创建项目进入GOPATH对应的目录中,然后到bin目录下,可以查看到bee执行文件。通过bee创建的工程会直接放在GOPATH的src路径下面,生成对应项目框架结构 通过new命令生成的项目是包含前后端都涉及全项目bee new ProjectName3.通过bee创建(API)项目只提供创建写API接口应用的项目,相对原创 2022-01-23 14:42:00 · 490 阅读 · 0 评论 -
Go gin框架使用
1.表单数据form:前端表单数据名称 required:表示字段是必须的type User struct { UserName string `form: "user_name" binding: "required"` Phone string `form: "phone" binding: "required"` Passwd string `form: "password" binding: "required"`}2.表单实体绑定(get请求原创 2022-01-22 17:00:56 · 1071 阅读 · 0 评论 -
Go单元测试(gomock)
摘要:项目结构:1.期望输入1,返回1stub_test.gopackege trygomockimport ( "github.com/golang/mock/gomock" "testing" "unit_test_class/mock")func TestStub(t *testing.T) { ctl := gomock.NewController(t) defer ctl.Finish() client.原创 2022-01-20 23:06:08 · 865 阅读 · 0 评论 -
Go 单元测试(goconvey)
摘要:golang测试框架--smartystreets/goconvey - 静静别跑 - 博客园原创 2022-01-19 20:35:10 · 367 阅读 · 0 评论 -
Go 单元测试(httptest)使用
摘要:Golang单元测试之httptest使用_Lesroad-CSDN博客_httptest摘要:Go进阶--httptest - failymao - 博客园原创 2022-01-19 20:34:05 · 757 阅读 · 0 评论 -
Go runtime包
常见使用:获取cpu个数 设置cpu个数 过去goroot目录 获取系统类型package mainimport ( "fmt" "runtime")func init() { // 获取逻辑cpu的数量 fmt.Println("逻辑cpu数量:", runtime.NumCPU()) // 逻辑cpu数量: 12 // 设置go程序执行的最大cpu数量 n := runtime.GOMAXPROCS(runtime.NumCPU()) fmt.Println(n原创 2021-12-27 22:34:31 · 276 阅读 · 0 评论 -
Go bufio包
读取文件:bufio.NewReader(f)读取文件,将文件内存存储到缓冲区,在将缓冲区文件内容一次性写入新的文件package mainimport ( "bufio" "fmt" "os")func main() { fileName1 := "D:\\goworkspace\\src\\app01\\bl.txt" f, err := os.Open(fileName1) if err != nil { fmt.Println(err) } r1 :=原创 2021-12-27 19:35:34 · 406 阅读 · 0 评论 -
Go 文件拷贝
IO.COPY():package mainimport ( "fmt" "io" "os")func main() { fileName1 := "D:/goworkspace/src/app03/a.txt" fileName2 := "ab.txt" file1, err := os.Open(fileName1) if err != nil { fmt.Println(err) } file2, err := os.OpenFile(fileName2, os原创 2021-12-27 19:10:48 · 152 阅读 · 0 评论 -
Go time包
将时间格式转换成字符串格式:Format()方法package mainimport ( "fmt" "time")func main() { t1 := time.Now() fmt.Println(t1) // 2021-12-24 16:46:07.5344049 +0800 CST m=+0.001560401 fmt.Printf("类型:%T\n", t1) // 类型:time.Time //转换成string类型 /* t1.For原创 2021-12-24 16:58:20 · 201 阅读 · 0 评论 -
Go init函数
定义:init()函数没有参数和返回值 init()函数可以重复定义多个 一个包被其他多个包import,但只能被初始化一次 init()函数只能由go程序自动调用,不能被引用执行顺序:在main包中的go文件默认总是会被执行 对同一个go文件的init()调用顺序是从上到下的 对同一个package中的不同文件,将文件名按照字符串进行‘从小到大’顺序,之后顺序调用各文件中init()函数 对于不同的package,如果不相互依赖的话,按照main包中import的顺序调用包中init原创 2021-12-24 16:04:13 · 272 阅读 · 0 评论 -
Go 包管理
包的使用:一个目录下所有文件归属一个包,package的声明要一致 package声明的包和对应的目录名可以不一致,但习惯上还是写成一致的 包可以嵌套 同包下的函数不需要导入包,可以直接使用 main包,main()函数所在的包,其他的包不能使用 导包的时候,路径要从src下开始写package main// 相对导包import "./utils"// 绝对导包import "app01/utils"点(.)操作:这个点操作含义就是这个包导入后,调用这个包的函数时,可原创 2021-12-24 15:38:19 · 186 阅读 · 0 评论 -
Go 自定义错误
自定错误,需要实现error()接口中的Error()方法package mainimport ( "fmt" "math")// 定义错误类型type areaError struct { msg string radius float64}// 实现error接口,就是实现error接口中Error()方法func (e *areaError) Error() string { return fmt.Sprintf("error:半径,%.2f,%s", e.r原创 2021-12-24 13:57:36 · 588 阅读 · 0 评论 -
Go type关键字
定义新的类型:package mainimport "fmt"type myint inttype mystring stringfunc main() { var a myint a = 100 fmt.Println(a) // 100 fmt.Printf("%T\n", a) // main.myint}类型别名:注意:在main包不能定义类型别名的新方法,可以通过定义为新类型在添加方法package mainimport原创 2021-12-24 11:55:51 · 355 阅读 · 0 评论 -
Go interface
接口实现:在go中,接口是一组方法的签名 实现接口:某个类型为这个接口中所有方法提供了方法的实现 go语言中,接口和类型的实现关系,不需要声明。(声明类型,例如java:class Mouse implements USB{}) 当需要接口类型的对象时,可以使用任意实现类型对象代替 接口对象不能访问实现类的属性package mainimport "fmt"type USB interface { start() end()}type Mouse struct原创 2021-12-23 17:17:36 · 318 阅读 · 0 评论 -
Go 函数指针与指针函数
函数指针:定义:一个指针,指向一个函数的指针,在go语言中,function默认看作一个指针package mainimport "fmt"func fun1() { fmt.Println("func1...")}func main() { var a func() a = func1 a() // 调用fun1函数}指针函数:定义:一个函数,该函数的返回值是一个指针package mainimport "fmt"原创 2021-12-22 20:48:51 · 6336 阅读 · 2 评论 -
Go 数组指针与指针数组
数组指针:解释:首先是一个指针,一个数组的地址*[num]T // 数组指针package mainimport "fmt"func main() { arr1 := [4]{1,2,3,4} // 创建一个数组 // 创建一个数组指针 var p1 *[4]int p1 = &arr1 fmt.Println(p1) // &[1,2,3,4] fmt.Printf("%p\n", p1) // 数原创 2021-12-22 18:44:46 · 509 阅读 · 0 评论 -
Go 闭包
闭包:局部变量的生命周期会发生改变,正常的局部变量随着函数的调用而创建,随着函数的结束而销毁 但是闭包结构中的外层函数的局部变量并不会随着外层函数的结束而销毁,因为内层函数还会使用示例:package mainimport "fmt"func increment() (func() int) { i := 0 // 定义一个局部变量 // 定义一个局部函数 fun := func() int { i++ return原创 2021-12-22 17:36:29 · 184 阅读 · 0 评论 -
Go 数组(array)
数组内存结构示意图:数组的使用:摘要:Go 语言数组 | 菜鸟教程注意:数组时值类型摘要:GO语言数组类型是值类型_qq_23569917的博客-CSDN博客_go 数组是值类型原创 2021-12-22 16:23:47 · 197 阅读 · 0 评论 -
Go 结构体方法
调用方法顺序:package mainimport ( "fmt")type People struct {}func (p *People) ShowA() { fmt.Println("ShowA") p.ShowB() // 调用People结构体的ShowB方法}func (p *People) ShowB() { fmt.Println("ShowB")}type Teacher struct { People}fu原创 2021-12-22 14:42:44 · 198 阅读 · 0 评论 -
Go 结构体方法实现接口方法
注意:在 Go 语言中,一个 struct 实现了某个接口里的所有方法,就叫做这个 struct 实现了该接口。方式一:摘要:[系列] Go - 结构(struct) 实现 接口(interface) - 新亮笔记 - 博客园var _ Study = (*study)(nil) // _ 忽略当前变量方式二:摘要:golang 导入自定义结构体、实现接口 - Go语言中文网 - Golang中文社区...原创 2021-12-21 10:52:53 · 1056 阅读 · 0 评论 -
Go &T{}和new(T)和(*T)(nil)区别
摘要:(* T)(nil)和& T {} / new(T)之间的区别是什么? Golang - IT屋-程序员软件开发技术分享社区(* T)(nil)它返回nil指针或没有指针,但仍然为struct的所有字段分配内存。 new(T)和& T {}完全等价:分配一个零T并返回一个指向这个分配的内存的指针。唯一的区别是,& T {}不适用于内置类型,如int;你只能做new(int)。package mainimport ( "fmt")...原创 2021-12-21 09:54:03 · 2705 阅读 · 0 评论 -
Go sync模块
sync.Cond模块:package mainimport ( "fmt" "math/rand" "time")var cond sync.Cond// 生产者func producer(out chan<- int, index int) { for { cond.L.Lock() for len(out) == 10 { fmt.Println(index, "满了")原创 2021-12-20 22:00:44 · 339 阅读 · 0 评论 -
Go type func()用法
摘要:go语言中type func使用go语言的type func()用法_hjxisking的专栏-CSDN博客在go语言中,type可以定义任何自定义的类型比如熟悉的:type dog struct{},type myInt int 等等所以func也是可以作为类型自定义的,type myFunc func(int) int,意思是自定义了一个叫myFunc的函数类型,这个函数的签名必须符合输入为int,输出为int已知,相同底层类型的变量之间是可以相互转换的,例如从一个取值范围小的int16转为取原创 2021-12-20 15:04:46 · 437 阅读 · 0 评论 -
Go 线程安全map(sync.map)
摘要:深度解密Go语言之sync.map - 知乎原创 2021-12-20 14:00:42 · 1227 阅读 · 0 评论 -
Go 定时器(timer)
创建一个定时器:package mainimport ( "fmt" "time")func main() { timer := time.NewTimer(time.Second*3) // 3秒定时器 fmt.Printf("timertype: ", timer) fmt.Println(time.Now()) // 当前时间 // 停止定时器 //timer.Stop() c := <- time原创 2021-12-18 23:08:36 · 3323 阅读 · 0 评论 -
Go 结构体(struct)
go语言中的结构体:Go 结构体与初始化 - Helldorado - 博客园Go 通过类型别名(alias types)和结构体的形式支持用户自定义类型。 结构体是复合类型,当需要定义类型,它由一系列属性组成,每个属性都有自己的类型和值的时候,就应该使用结构体,它把数据聚集在https://www.cnblogs.com/liyutian/p/10050320.html...原创 2021-12-17 16:02:36 · 1680 阅读 · 0 评论 -
Go slice和map初始化
摘要:slice初始化:golang未初始化的slice和初始化为空的slice的区别简析_zhang197093的博客-CSDN博客_golang 初始化slice摘要:map初始化:Golang中map的初始化及使用_冷月醉雪的博客-CSDN博客_go map 初始化切片(slice)初始化:// 定义未初始化的slicevar s1 []string// 通过字面量形式定义并初始化为空slicevar s2 = []string{}// 通过make函数定义并初始化为原创 2021-12-17 15:56:41 · 1004 阅读 · 0 评论 -
Go beego包
app01/main.gopackage main import ( "github.com/astaxie/beego" _ "app01/router" // 初始化路由)func main() { beego.Run()}app01/router/route.gopackage routerimport ( "github.com/astaxie/beego" "app01/controller")func init(原创 2021-12-16 20:14:18 · 271 阅读 · 0 评论 -
Go math/rand和crypto/rand包
摘要:Go语言生成随机数go生成随机数_study_in的博客-CSDN博客_go 随机数用习惯了python里面的random模块,随机数真的是顺手就来,这次用到了go,没想到生成的居然是伪随机数,首次生成虽然随机了,但是再次生成就一直是这个,这怎么搞,完全没随机啊,下面说一说踩过的坑!!!文章目录1. 首先来说一下什么是随机数2. go中生成随机数的有两个包,分别是“math/rand”和“crypto/rand”,3. 随机数生成4. 初始化随机种子函数(下面为官方文档说明)5...https:/原创 2021-12-16 17:20:01 · 435 阅读 · 0 评论 -
Go 通道(chan)
示例:package mainimport "json"func main() { defer conn.Close() data, err := redis.String(conn.Do("blpop", "queuelist", 0)) // 没有数据时,直接等待,超时时间为0 if err!=nil { fmt.Println("redis read failed, err: ", err) } var req SecR原创 2021-12-16 15:12:21 · 161 阅读 · 0 评论 -
Go reflect包
摘要:reflect包使用Go语言反射reflect - itbsl - 博客园反射是指在程序运行期对程序本身进行访问和修改的能力。程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行部分。在运行程序时,程序无法获取自身的信息。 支持反射的语言可以在程序编译期将变量https://www.cnblogs.com/itbsl/p/10551880.html...原创 2021-12-16 11:22:06 · 176 阅读 · 0 评论 -
Go redis操作
摘要:Go操作Redis - 常见-youmen - 博客园mget获取数据:package mainimport ( "fmt" "github.com/garyburd/redigo/redis")func main() { conn,err := redis.Dial("tcp","121.36.43.223:6379") if err != nil{ fmt.Println("connect redis error:",err) return } def原创 2021-12-15 21:40:19 · 534 阅读 · 0 评论 -
Go 结构体使用
结构体初始化 结构体方法调用package mainimport ( "fmt")type SecLimit struct { a string b string}type SecLimitMgr struct { UserLimitMap map[int]*SecLimit }// 限制器func antiSpam(req *SecRequest) (err error) { seclimt, ok := SecLimitMg原创 2021-12-15 20:21:18 · 201 阅读 · 0 评论 -
Go md5加密
摘要:go 调用 md5 方法_weixin_43004357的博客-CSDN博客_go md5fmt.Sprintf("%x", xxx)%x 将xxx转换成十六进制package mainimport( "fmt" "crypto/md5" "encoding/hex")func main(){ data := []byte("hello world") s := fmt.Sprintf("%x", md5.Sum(data))原创 2021-12-15 19:06:13 · 713 阅读 · 0 评论