随笔 - 433  文章 - 0 评论 - 2 阅读 - 26万

随笔分类 -  Go

1 2 3 下一页
mutex.Lock():是否需要加锁,何时加?
摘要:流加锁,包不用加锁 传输层的TCP是基于流的传输,需要加锁, 应用层的WebSocket是基于包的传输,同时写也不会导致数据混乱,不需要加锁。 所以,在*websocket.Conn.WriteJSON(data)时,不需要前后加锁 以下代码中的mutex.Lock()没必要: wsc.mutex. 阅读全文
posted @ 2023-04-23 11:42 西伯尔 阅读(36) 评论(0) 推荐(0) 编辑
go特色
摘要:1、switch case默认是break的,可以省略break关键字。 当然也可以显示break,那么就和其他语言一样了。 参考: https://www.jianshu.com/p/3a5d2e7f09a8 【话说现在简书要守不住底线了,跳出这么多垃圾广告,还是博客园干净,就是不知道能撑多久,据 阅读全文
posted @ 2023-04-21 18:47 西伯尔 阅读(5) 评论(0) 推荐(0) 编辑
go类型
摘要:1、基本类型强转 // interface{}转为其他类型【当然这个得保证是这个类型,否则肯定报错。最好先断言】 var v interface{} var a int a = v.(int) // uint32转为int【低精度往高精度转?】 var i uint32 a = int(i) //s 阅读全文
posted @ 2023-04-21 16:08 西伯尔 阅读(4) 评论(0) 推荐(0) 编辑
回调
摘要:回调函数就是一个通过函数指针调用的函数。【真正的函数实现】 如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。【被传递的那个函数】 回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进 阅读全文
posted @ 2023-04-21 11:42 西伯尔 阅读(30) 评论(0) 推荐(0) 编辑
mock开发:问题及解决
摘要:技术问题 1、我想在cli的函数中给wsc对象的某个属性赋值 考虑以下三种方案: 回调:需要把函数作为参数。这个匿名函数的参数不可修改,而且是来自控制台输入,没办法。 context:把context本身作为参数传递,context里面放wsc对象。还是改不了参数,没办法。 全局:由于有多处调用,都 阅读全文
posted @ 2023-04-21 11:16 西伯尔 阅读(34) 评论(0) 推荐(0) 编辑
go语言妙用
摘要:1、利用channel关闭,实现Context.Done() 这个Context.Done()的具体实现,需要看源码: func (c *cancelCtx) Done() <-chan struct{} { c.mu.Lock() if c.done == nil { c.done = make( 阅读全文
posted @ 2023-04-20 15:22 西伯尔 阅读(25) 评论(0) 推荐(0) 编辑
cli程序(一)cobra
摘要:1、cobra使用 包含两个模块: (1)先用Generator自动生成模板, (2)再依据Cobra Library修改模板,设置自己的参数。 1、Generator使用 注意:由于代码是自动生成的,最好不要在自己项目中随便用这生成命令,因为一不小心就把你的main.go全部覆盖了!!! 建议:建 阅读全文
posted @ 2023-04-12 17:17 西伯尔 阅读(130) 评论(0) 推荐(0) 编辑
channel原理
摘要:一个buf是循环队列 两个指向循环队列的指针 两个指向阻塞协程的指针 参考: https://cloud.tencent.com/developer/article/1750350 阅读全文
posted @ 2023-03-07 18:12 西伯尔 阅读(11) 评论(0) 推荐(0) 编辑
go的select
摘要:case语句: 1、select会监听case语句中channel的读写操作,当case中channel读写操作为非阻塞状态(即能读写)时,将会触发相应的动作。 2、select中的case语句必须是一个channel操作,select中的default子句总是可运行[不是必运行]的。 case执行 阅读全文
posted @ 2023-03-02 17:32 西伯尔 阅读(17) 评论(0) 推荐(0) 编辑
go中struct{}和interface{}区别
摘要:struct{}和interface{}都是Go语言中的数据类型,但它们的用途和特性是不同的。 struct{}是一个结构体类型,用于定义自定义的复合类型。它可以包含零个或多个具有不同类型的字段。结构体类型的值可以通过实例化一个结构体变量来创建。 interface{}是一个接口类型,用于定义一组方 阅读全文
posted @ 2023-02-28 18:40 西伯尔 阅读(489) 评论(0) 推荐(0) 编辑
go学习(三十)make()函数
摘要:make() 是 Go 语言内存分配的内置函数,默认有三个参数。 make(Type, len, cap) 三个参数 Type:数据类型,必要参数,Type 的值只能是 slice、 map、 channel 这三种数据类型。 len:数据类型实际占用的内存空间长度,map、 channel 是可选 阅读全文
posted @ 2023-02-24 16:15 西伯尔 阅读(373) 评论(0) 推荐(0) 编辑
http学习(三)超时
摘要:1、go设置超时时间 ###(1)SetDeadline 首先,你需要了解Go实现超时的网络原语(primitive): Deadline (最后期限)。 net.Conn为Deadline提供了多个方法Set[Read|Write]Deadline(time.Time)。 Deadline是一个绝 阅读全文
posted @ 2023-02-24 13:55 西伯尔 阅读(104) 评论(0) 推荐(0) 编辑
go学习(二十八)标准库
摘要:中文官方标准库文档:http://doc.golang.ltd/ 除了标准库,还有第三方库(外部包) 1、net【网络】 func DialTCP func DialTCP(net string, laddr, raddr *TCPAddr) (*TCPConn, error) DialTCP在网络 阅读全文
posted @ 2023-02-03 16:34 西伯尔 阅读(64) 评论(0) 推荐(0) 编辑
go学习(二十七)断言
摘要:断言有两种用法, 用法一 t := x.(type) // 获取空接口x的类型 // x是空接口类型对象,type是关键字,可以理解为系统自定义的保留变量名,不是类型 这种断言可以用于switch-case,根据对象的类型,分别做不同处理,例子: 用法二 这种go的断言=Java的“instance 阅读全文
posted @ 2023-02-01 17:51 西伯尔 阅读(46) 评论(0) 推荐(0) 编辑
web网络协议中的数据结构
摘要:我对Context和Handler是最迷惑的,什么玩意儿,用他就实现通信啦?? 没有直观理解,不知道到底扮演一个什么角色。 1、Context 上下文 Context深度理解: 每一段程序都有很多外部变量(极度简单的函数略过),一旦有了外部变量,这段程序就不完整,不能独立运行,而为了让他们能运行,就 阅读全文
posted @ 2023-01-31 14:29 西伯尔 阅读(30) 评论(0) 推荐(0) 编辑
go学习(二十六)go的init函数
摘要:定义: 一个文件中可以有多个init()函数【都名为init】 引用: import _ "包名" 【一个包地下可以有多个文件,每个文件都可以有多个init()函数】 顺序: init先执行(多个init按定义顺序执行), 全局变量再执行,最后执行main函数 一个包中的多个文件,都有init,按照 阅读全文
posted @ 2023-01-11 15:16 西伯尔 阅读(40) 评论(0) 推荐(0) 编辑
Hook钩子
摘要:Hook 是在创建、查询、更新、删除等操作之前、之后调用的函数。 参考: https://learnku.com/docs/gorm/v2/hooks/9744#44b8c1 阅读全文
posted @ 2022-10-08 20:58 西伯尔 阅读(13) 评论(0) 推荐(0) 编辑
go学习(二十五)go中的http类型
摘要:Handle HTTP handler WriteHeader Request接口 Method string URL *url.URL Handler接口 ServeHTTP(ResponseWriter, *Request) ResponseWriter接口 Header() Header Wr 阅读全文
posted @ 2022-09-20 19:50 西伯尔 阅读(23) 评论(0) 推荐(0) 编辑
go学习(二十四)容器
摘要:一、go中的容器 1、array 数组【指定长度】 var 数组变量名 [元素数量]Type //数组声明 q := [...]int{1, 2, 3} var r [3]int = [3]int{1, 2} var array_name [size1][size2]...[sizen] array 阅读全文
posted @ 2022-09-20 19:16 西伯尔 阅读(67) 评论(0) 推荐(0) 编辑

1 2 3 下一页
点击右上角即可分享
微信分享提示