Go与C、汇编之间的调用
Go调用汇编新建如下目录asm├── add│ ├── add.go│ └── add_amd64.s└── main.go在 add.go 中定义一个函数声明,如下:package addfunc Add(a, b uint64) uint64同时在 add.go 的同一目录层级下,新建
Go调用汇编新建如下目录asm├── add│ ├── add.go│ └── add_amd64.s└── main.go在 add.go 中定义一个函数声明,如下:package addfunc Add(a, b uint64) uint64同时在 add.go 的同一目录层级下,新建
Go语言允许用户定义类型。当用户声明一个新类型时,这个声明就给编译器提供了一个框架,告知必要的内存大小和表示信息。声明后的类型与内置类型的运作方式类似。Go语言里声明用户定义的类型有两种方法。最常用的方法是使用关键字struct,它可以让用户创建一个结构类型。零值:当声明变量时,这个变量对应的值总是
三个常用的数据类型的大致实现,有点绕,但是很有收获!切片 Slice数据结构在64位架构的机器上,一个切片需要24字节的内存:指针字段需要8字节,长度和容量字段分别需要8字节。var slice []int 创建的数据结构如下:使用对新切片的长度与容量的计算规则如下:对底层数组容量是k的切片slic
Goalng context作用,原理,超时控制golang context的理解,context主要用于父子任务之间的同步取消信号,本质上是一种协程调度的方式。另外在使用context时有两点值得注意:上游任务仅仅使用context通知下游任务不再需要,但不会直接干涉和中断下游任务的执行,由下游任务自行决定后续的处理操作,也就是说context的取消操作是无侵入的;context是线程安全的,因为context本身是不可变的(immutable),因此可以放心地在多个协程中传递使用。 切片和数组区别基础问题。 channel关闭阻塞问题,goroutine如何调度,gopark是怎么回事?PMG模型描述,谁创建的PMG,runtime是怎么个东西,怎么启动第一个goroutinegolang CPS并发模型和PMG模型的理解。 go逃逸分析怎么回事,内存什么时候栈分配什么时候堆分配内存方面问题,这个网上很多,自己理解完整正确。 sync.Map实现原理,适用的场景go 1.9 官方提供sync.Map 来优化线程安全的并发读写的map。该实现也是基于内置map关键字来实现的