- 博客(8)
- 收藏
- 关注
原创 protobuf与grpc
protobuf是一种编解码协议,支持多种语言,比如go,python,c++,java,javascript等,效率比json更高,但是没有json那么易于理解。安装编译工具:截至到发文时间已更新至v3.18.0,下载位置:github链接然后将压缩包解压,再将bin目录设置到$PATH环境变量下即可插件此时还不支持golang,去grp-gateway按照提示安装:proto文件格式(经常变动,以github为准)syntax = "proto3";package coolcar;o
2021-09-29 01:35:30 735
原创 golang并发模式
文章目录生成器想要同时处理多个服务,可以将连个chan的服务同时发给第三个chan,同时等待多个服务并发模式,并不是设计模式,而是编写多go程和使用chan的通用套路:生成器生成器不停的产生服务/任务,返回一个服务句柄,用于跟服务交互//不停的产生任务/服务,返回一个任务/服务句柄,用于跟服务交互func msgGenerator() chan string { c := make(chan string) go func() { i := 0 for { time.Sleep(
2021-09-12 19:26:51 160
原创 golang随机数
如下生成0000-9999的随机数字 rand.Seed(time.Now().UnixNano()) //播种随机数种子 smsCode := fmt.Sprintf("%04d", rand.Int31n(10000))
2021-09-12 17:48:29 352
原创 golang系统接口
系统接口:type Stringer interface { String() string}例子:import "fmt"type Test struct { m int}func (t *Test) String() string { return "kshf"}func main() { t := &Test{} //会打印t.String() fmt.Println(t)}另外连个很重要的io接口type Reader interface {
2021-09-10 00:43:53 87
原创 golang之常量与枚举
golang的常量是一种非常特殊的类型,与其他语言区别挺大,在定义的时候不需要指定类型,如下:在使用时,num可以赋值给float等类型const ( s = "abc" num = 2)func main() { var a float = num fmt.Println(a) fmt.Printf("%T,%T",s,num)}在常量之后加入iota,成为自增常量,iota是一个与常量位置相等的值,并且是可以参与运算的,例子const ( s = 2 p num = io
2021-09-09 02:11:49 2206
原创 golang之websocket
websocket是啥websocket是socket连接和http协议的结合体,可以实现网页和服务端的长连接通信流程
2021-09-07 22:49:26 1635
原创 golang切片与数组
golang的切片是一个动态数组,也就是相当于C++中的vector,当然,切片类型变量就是一个指针变量具体操作:数组拷贝,注意数组的长度必须相同arr := [10]int{1,3,2,1,1,1,1}arr2 = arr //拷贝将数组转换成切片(其实就是切片指针指向了数组,非拷贝):此时改变切片元素内容,数组内容也会改变,注意:当切片arr2增加新元素后,会开辟新的空间,就和原数组没关系了 arr := [10]int{1,3,2,1,1,1,1} arr2 := arr[m:n]
2021-09-06 23:17:19 725
原创 go mod的使用
相信很多学go的小伙伴,不清楚go mod的具体用法,这里专门写篇文章备忘。go mod是在1.11版本以后出现的,所以在1.11版本之前,我们必须将项目建立在 $GOPATH/src 目录下go mod的具体语法1.module:指明根目录2.go 后面跟版本号是指定go的版本3.require是个动作指令,对依赖包起作用,比如require(依赖),还有exclude(排除),replace(替代),相同动作的可以放在一个动词+括号组成的结构中,如下:require ( new/th
2021-09-05 18:25:31 1247
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人