GoLang
sublio
这个作者很懒,什么都没留下…
展开
-
golang 匿名字段解析和序列化问题
说明:golang中包含匿名字段的结构体在解析和序列化(json.Unmarshal和json.Marshal)的时候:如果对匿名字段指定了解析说明`json:""`,就会变成带层级的字符数组。如果没指定解析说明,则会平铺。例子:匿名字段不加解析说明`json""`,就是和平铺的字符串相互转化和平铺的字符串互相转化成功:package mainimport ( "encoding/json" "fmt")func main() { initStr := [].原创 2021-02-05 11:11:01 · 779 阅读 · 1 评论 -
Golang学习笔记:sync.Once||sync.WaitGroup||sync.Pool
转载请注明出处:全系列目录:https://blog.csdn.net/sublio/article/details/106480267sync.Once||sync.WaitGroup||sync.Poolsync.Once 只执行一次 开箱即用 var once synv.Onceonce.Do(func() {fmt.Println("Once!")})sync.WaitGroup 开箱即用 不应该复制。 有一个代表计数的字节.原创 2020-06-02 19:50:19 · 183 阅读 · 0 评论 -
Golang学习笔记:原子操作
转载请注明出处:全系列目录:https://blog.csdn.net/sublio/article/details/106480267原子操作目录简介类型增或减Add比较并交换CAS载入Load存储Store交换Swap原子值sync/atomic.Value简介 执行过程中不能被中断的操作。在针对某个值的操作过程中,CPU绝不会再去执行其它针对该值的操作,无论这些其他操作是否是原子操作。 对于不能被取地址的值是无法进行原子操作的。 类型原创 2020-06-02 19:45:51 · 910 阅读 · 1 评论 -
Golang学习笔记:锁和条件变量
转载请注明出处:全系列目录:https://blog.csdn.net/sublio/article/details/106480267锁 与 条件变量目录互斥锁读写锁条件变量参考文献互斥锁 简单声明即可使用: var mutex sync.Mutexmutex.Lock()mutex.Unlock() (首次使用后?)不得复制(参考参考文献2),原因类似原子类型4(原子操作文档),解决方案:使用指针值。 应该配合defer使用及时.原创 2020-06-02 19:31:57 · 491 阅读 · 0 评论 -
Golang学习笔记:目录
转载请注明出处:高级类型:https://blog.csdn.net/sublio/article/details/106478300 基本控制流程:https://blog.csdn.net/sublio/article/details/106478408 通道Channel:https://blog.csdn.net/sublio/article/details/106478103 定时器:https://blog.csdn.net/sublio/article/details/1064778原创 2020-06-01 19:38:25 · 180 阅读 · 0 评论 -
Golang学习笔记:基本控制流程
基本控制流程代码块 有花括号构成 重新声明外层代码块声明过的标识符,此时外层空间外层代码块的那个同名标识符被屏蔽了 func main() {a := 1if a == 1 {var a stringfmt.Println(a){var a []intfmt.Println(len(a))}}}switch 同一个case后面可以接多个表达式,关系为或 fallthrought向下一个case转移流程控制权 for与rang原创 2020-06-01 17:44:06 · 193 阅读 · 0 评论 -
Golang学习笔记:高级类型
高级类型数组 长度不可变。 [...]int{1,2,3}不用指定长度,为3。 切片 内部结构三个元素:指向底层数组某个元素的指针;切片的长度;切片的容量。 容量cap:从指针指向的元素到底层最后一个元素的元素个数。 当底层数组不足以完成append的操作,会换一个更长的底层数组(一开始两倍长度?)。 零值为nil,长度为0,可以直接append操作。 map 散列表,关联数组。 零值为nil,长度为0,不可以进行取值等操作。原创 2020-06-01 17:39:51 · 190 阅读 · 0 评论 -
Golang学习笔记:通道Channel(以通信作为手段来共享内存)
通道类型:以通信作为手段来共享内存Channel(注:引用类型,零值为nil不能直接用)声明和初始化 三种(后两种直接声明使用没有意义):chan T | chan<- T | chan-> T;其中T表示类型。 别名声明:type IntChan chan int 变量声明:var intChan chan int 缓冲通道初始化:make(chan int, 10) len表示通道中已经存在的元素的个数,会有所变化。 .原创 2020-06-01 17:32:51 · 1146 阅读 · 0 评论 -
Golang学习笔记:定时器
Timer和TickerTimer(一次) 不能直接用复合字面量来初始化。 time.NewTimer(time.Duration)初始化。 例子:timer := time.NewTimer(3 * time.Hour + time.Minute) 到期后向其通知通道(timer.C)发送到期的绝对到期时间(初始化时间 + 相对到期时间)。 timer.C是类型为chan time.Timer的接受通道(定时器内部为双向,可以向它发送元素)。原创 2020-06-01 17:23:35 · 227 阅读 · 0 评论 -
GoLand自带JSON库用法
装载来源:https://www.cnblogs.com/fengbohello/p/4665883.html原作者:郝峰波正文:本文介绍如何使用Go语言自带的库把对象转换为JSON格式,并在channel中进行传输后,并把JSON格式的信息转换回对象。1、Go语言的JSON 库 Go语言自带的JSON转换库为encoding/json 1.1)其中把对象...转载 2019-03-11 11:12:48 · 1638 阅读 · 0 评论