Go
记录一些使用Go语言时遇到的问题。
styshoo
这个作者很懒,什么都没留下…
展开
-
Golang交叉编译
Golang交叉编译主要依赖几个参数:GOOS、GOARCH和CGO_ENABLED。原创 2023-08-08 14:51:13 · 592 阅读 · 0 评论 -
Go语言泛型工具go2go
背景Go语言从1.18开始,初步支持泛型。要探索Go是如何实现泛型的,就需要使用工具go2go,这里介绍下如何编译该工具。正文go2go是以工具的形式来使用的,可通过go tool go2go <subcommand>来执行命令。Go的工具链由Go语言编写,所以需要提前安装GO,并配置好GOPATH等。下载代码代码在Go语言源码的dev.go2go分支,该分支于2020年发布,现在已经不再维护。代码量偏大,如果网络不佳,可以考虑通过gitee来中转。git clone https原创 2022-03-15 14:19:45 · 1881 阅读 · 0 评论 -
Go语言通道
背景Golang与其他语言最大的区别是什么呢?在我看来,一个是goroutine,另一个就是通道channel了。其他语言,一般通过共享内存的方式实现不同线程间的通信,也就是说,把数据放在共享内存以供多个线程来使用。这种方法思路简单,但却使得并发控制变得复杂和低效。Golang不建议使用这种方式(虽然也提供了这种传统方式),而是推荐使用通道,也就是channel。详解声明一个通道类型如下:var intChan chan int通道是一种引用类型,和切片、字典相同。初始化引用类型,都需要用到m原创 2022-03-03 17:00:41 · 735 阅读 · 0 评论 -
Go语言协程
概述Golang中,协程可以简单理解为轻量级的线程。协程开销比线程低,M个协程运行在N个线程上,也就是通常所说的M:N模型。协程完全由Golang运行时管理,而不是由操作系统管理。线程是抢占式的多任务,而协程是非抢占式的任务。通过以上这些方法,从而实现了协程的轻量化。使用Golang创建协程非常简单,只需要go FuncName()即可。package mainimport ( "fmt")func print(name string) { for i := 0; i < 5;原创 2022-03-02 09:57:17 · 682 阅读 · 0 评论 -
Go语言中init函数作用
init函数作用执行Golang的sync.Once操作;有些不能使用初始化表达式的变量,可以在init函数中初始化;先于普通函数执行一些操作。init函数特点init函数是先于main函数执行;package mainimport "fmt"func init() { fmt.Println("init...")}func main() { fmt.Println("main...")}输出:init...main...init函数没有入参;原创 2022-03-02 09:38:02 · 446 阅读 · 0 评论 -
g——Windows下安装多版本golang
有三种方法,推荐使用第三种。方法一:官方方法 , golang/dl。该方法要求能科学上网,我试过一些国内的代理网站,都不可行。方法二:gvm已经好几年不更新了,有很多错误,但优点是可以同时运行多个版本的Golang。方法三:g国内可以使用该方法,安装速度较快,但同一个时刻只能运行一个版本的Golang。这里主要讲述该方法。我这里以在windows下安装为例,将golang安装在目录E:\g下,GOPATH为E:\gopath。从1.2.1开始,支持自定.原创 2022-03-02 09:24:41 · 3374 阅读 · 2 评论 -
golang的ide:GoClipse
之前也用过LiteIDE,但苦于其总是崩溃,所以就切换到了GoClipse。虽说叫做GoClipse,但其实也只是Eclipse上给golang开发的一个插件。要求:Eclipse 4.5 (Mars) or laterJava VM version 8 or later因为GFC的封闭,我们需要先到https://github.com/GoClipse/goclipse.github.原创 2015-12-28 01:15:46 · 1461 阅读 · 1 评论