Go
五山口老法师
腾讯后台开发工程师
展开
-
Go: 字符串比较的三种方法
golang字符串比较的三种常见方法fmt.Println("go"=="go")fmt.Println("GO"=="go")fmt.Println(strings.Compare("GO","go")) //不等 返回 -1fmt.Println(strings.Compare("go","go")) //相等返回 0fmt.Println(strings.EqualFold("GO","go"))输出truefalse-10true1,自建方法“==”,区分大小写,最..原创 2021-03-21 17:49:58 · 1589 阅读 · 0 评论 -
Go: init()执行顺序问题
init()函数会在包被初始化后自动执行,并且在main()函数之前执行,但是需要注意的是init()以及main()函数都是无法被显式调用的。那么init()是不是最先执行的呢?答案是否定的,首先,在他之前会进行全局变量的初始化。当我们导入其他包时,会先初始化导入的包,而初始化包时,会先加载全局变量,而后从上到下加载init()函数,当被导入的包的init()函数执行完毕后,执行调用方的全局变量加载,init()函数的顺序加载,之后执行main()函数。...原创 2021-03-21 17:35:08 · 1140 阅读 · 0 评论 -
Go: GoRoutine是如何实现的?
Go runtime的调度器:在了解Go的运行时的scheduler之前,需要先了解为什么需要它,因为我们可能会想,OS内核不是已经有一个线程scheduler了嘛?熟悉POSIX API的人都知道,POSIX的方案在很大程度上是对Unix process进场模型的一个逻辑描述和扩展,两者有很多相似的地方。 Thread有自己的信号掩码,CPU affinity等。但是很多特征对于Go程序来说都是累赘。 尤其是context上下文切换的耗时。另一个原因是Go的垃圾回收需要所有的goroutine停止,使原创 2021-03-21 01:00:19 · 258 阅读 · 0 评论 -
GO: go.mod go.sum
如果你还在使用 GOPATH 模式来开发Golang程序,那么你可以参考本文来告别 GOPATH,并带给你一个方便的包管理工具。关于 go mod 的说明和简单使用,可以参考:1、Go1.1.1新功能module的介绍及使用2、Introduction to Go Modules3、Go 1.11 Modules 官方说明文档使用go mod 管理项目,就不需要非得把项目放到GOPATH指定目录下,你可以在你磁盘的任何位置新建一个项目,比如:新建一个名为 wserver 的项目,项目原创 2020-11-02 01:09:35 · 15031 阅读 · 2 评论