go
BobChill
这个作者很懒,什么都没留下…
展开
-
golang 浮点数解析
1.浮点数陷阱: var f1 float64 = 0.3 var f2 float64 = 0.6 fmt.Println(f1 + f2) //0.8999999999999999 结果不是我们想的0.9,这和浮点数在内存中的存储有关,计算机通过二进制的形式存储数据,大多数小数表示成二进制后是近似且无限的。 2.浮点数在内存中的表示: 最开头为符号位,1代表负数,0表示正数。 以十进制数0.085为例,0.085 * 2 ** 4 = 1.36,故其可以写成1.36 * 2^-4,原创 2022-01-23 21:30:14 · 820 阅读 · 0 评论 -
golang中的defer
A defer statement is often used with paired operations like open and close, connect and disconnect, or lock and unlock to ensure that resources are released in all cases, no matter how complex the con...原创 2018-09-21 11:00:13 · 160 阅读 · 0 评论 -
goroutine和channel与死锁详解
Go语言中有个概念叫做goroutine, 这类似我们熟知的线程,但是更轻。 goroutine和线程的具体区别在于: 1. OS的线程由OS内核调度,每隔几毫秒,一个硬件时钟中断发到CPU,CPU调用一个调度器内核函数。这个函数暂停当前正在运行的线程,把他的寄存器信息保存到内存中,查看线程列表并决定接下来运行哪一个线程,再从内存中恢复线程的注册表信息,最后继续执行选中的线程。这种线程切换需要...转载 2018-10-08 15:51:52 · 815 阅读 · 0 评论