runtime

Posted by 夏泽民

1. runtime.GOMAXPROCS函数



go:linkname go:nosplit

Posted by 夏泽民

go:linkname 指令的格式如下: //go:linkname hello github.com/lastsweetop/testlinkname/hello.hellofunc go:linkname引导编译器将当前(私有)方法或者变量在编译时链接到指定的位置的方法或者变量,第一个参数表示当前方法或变量,第二个参数表示目标方法或变量,因为这关指令会破坏系统和包的模块化,因此在使用时必须导入unsafe 代码详见:https://github.com/xiazemin/golink 这个指令不经常用,最好也不要用,但理解这个指令可以帮助你理解核心包的很多代码。在标准库中是为了可以使用另一个包的unexported的方法或者变量,在敲代码的时候是不可包外访问的,但是运行时用这个命令hack了一下,就变得可以访问。 比如runtime 包 sema.go文件 //go:linkname notifyListWait sync.runtime_notifyListWait



Go 语言编译指示

Posted by 夏泽民

https://golang.org/cmd/compile/#hdr-Compiler_Directives C 语言的 #include 一上来不太好说明白 Go 语言里 //go: 是什么,我们先来看下非常简单,也是几乎每个写代码的人都知道的东西:C 语言的 #include。 我猜,大部分人第一行代码都是 #include 吧。完整的就是#include 。意思很简单,引入一个 stdio.h。谁引入?答案是编译器。那么,# 字符的作用就是给 编译器 一个 指示,让编译器知道接下来要做什么。



Cond

Posted by 夏泽民

Cond用于在并发环境下routine的等待和通知



reflection

Posted by 夏泽民

反射指的是程序借助某种手段检查自己结构的一种能力,通常就是借助编程语言中定义的各种类型(types)。 类型和接口(Types and interfaces) 因为反射是建立在类型系统(the type system)上的,所以让我们从复习Go中的类型开始讲起。



Search

Popular posts

Anything in here will be replaced on browsers that support the canvas element

Recent posts

This blog is maintained by 夏泽民

Get in touch with me at 465474307@qq.com

Subscribe to our mailing list

* indicates required