Golang
文章平均质量分 92
JameKeal
知其然也要知其所以然
展开
-
Go语言小细节——内置类型键值或下标规则
数组和切片组合字面值中下标规则数组和切片组合字面值中的下标必须为整数常量在一个数组或切片组合字面值中,如果一个元素的索引下标缺失,则编译器认为它的索引下标为出现在它之前的元素的索引下标加一package mainimport "fmt"var x = []int{2: 5, 6, 0: 7}func main() { fmt.Println(x) // [7 0 5 ...原创 2019-12-22 21:47:31 · 276 阅读 · 0 评论 -
Go语言小细节——表达式估值顺序
表达式估值当估值一个表达式、赋值语句或者函数返回语句中的操作数时,所有的函数调用、方法调用和通道操作将按照它们在代码中的出现顺序进行估值。但是 Go 白皮书未指定表达式中其它估值顺序。目前 Go 的编译器官方维护有两种主流的,一个是 gc 编译器,一个是 gccgo 编译器,两种编译器打印出来的值不一样。package mainvar x, i = []int{1, 2}, 0func...原创 2019-12-22 21:36:55 · 200 阅读 · 0 评论 -
Go语言小细节——变量估值规则
变量与常量的估值package mainfunc main() { var n uint = 10 const N uint = 10 var x byte = (1 << n) / 100 var y byte = (1 << N) / 100 println(x, y) // 0 10}程序的打印结果值为:0,10以上程序中,x 与 y 的输出不...原创 2019-12-22 17:51:01 · 186 阅读 · 0 评论 -
Go语言小细节——分号自动插入规则
插入规则在 Go 代码中,注释除外,如果一个代码行的最后一个语法词段(token)为下列所示之一,则一个分号将自动插入在此字段后(即行尾):一个标识符一个整数、浮点数、虚部、码点或者字符串字面表示形式这几个跳转关键字之一:break、continue、fallthrough 和 return自增运算符++或者自减运算符–一个右括号:) ] }为了允许一条复杂语句完全显示在...原创 2019-12-22 16:44:56 · 574 阅读 · 0 评论 -
进程、线程、协程与Goroutine
进程、线程、协程与Goroutine进程与线程(隔离与并行)进程线程协程协程的核心机制为何使用中断协程与线程协程与GoruntineGOMAXPROCS进程与线程(隔离与并行)进程进程可看作为分配资源的基本单位。比如你new出了一块内存,就是操作系统将一块物理内存映射到你的进程地址空间上(进程创建必须分配一个完整的独立地址空间),这块内存就属于这个进程,进程内的所有线程都可以访问这块内存,其...原创 2018-12-20 17:05:51 · 462 阅读 · 1 评论 -
Golang的垃圾回收机制
Golang的垃圾回收机制什么是垃圾回收?常见的垃圾回收方法引用计数(reference counting)标记-清除(mark and sweep)分代收集(generation)三色标记法Go的GC何时触发什么是垃圾回收?传统的系统级编程语言(主要指C/C++)中,程序员必须对内存小心的进行管理操作,控制内存的申请及释放。稍有不慎,就可能产生内存泄露问题,这种问题不易发现并且难以定位,一直...原创 2018-12-22 17:37:00 · 320 阅读 · 0 评论 -
Golang的Goruntine调度原理
Golang的Goruntine调度机制Goroutine的调度模型调度实现注意要点每次go调用的时候当线程阻塞时Goruntinue如何调度G任务中断后的恢复Goroutine的调度模型Go的调度器内部有四个重要的结构:M,P,S,Sched(定义在源码的src/runtime/runtime.h文件中)一、G代表一个Goroutine对象,每次go调用的时候,都会创建一个G对象,它有自...原创 2018-12-22 23:28:07 · 1136 阅读 · 0 评论 -
Golang的make与new的区别
Golang的make与new的区别创建对象类型不同返回类型不同make为什么返回非零值创建对象类型不同make用于内建类型(map、slice 和channel)的内存分配。new用于各种类型的内存分配。返回类型不同new的函数声明:func new(Type) *Type接受一个参数,这个参数是一个类型,分配好内存后,返回一个指向该类型内存地址的指针。它同时把分配的内存置为零,...原创 2019-01-04 16:02:12 · 322 阅读 · 0 评论