![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Go
爱吃烤面筋的鱼
拥有4年的智能制造领域的软件开发经验。。熟悉传统行业的数字化转型,使用最新的微服务技术为企业提供更多的效益。。主要使用 JAVA 相关技术
展开
-
go-error-启动错误-open usrlocalgopkgdarwin_amd64runtimecgo.a: permission denied
用 ide 启动时报下面的错误: open /usr/local/go/pkg/darwin_amd64/runtime/cgo.a: permission denied 那进入启动配置项里面,看看启动的时候是否有加 -i 标志 /usr/local/go/bin/go build -i -o ... 如果有的话,将这个 -i 去掉就可以了 参考文章: https://github.com/golang/go/issues/37962 ...原创 2020-09-30 16:32:51 · 1032 阅读 · 0 评论 -
go-error-启动错误-import cycle not allowed
今天在启动 go 项目时报出了下面的错误,导致启动失败: import cycle not allowed 根据字面意思猜测是导入出现了循环,再查一下资料,确实是这个意思,golang 不允许循环导包, 如果检测到import cycle,会在编译时报错。 仔细检查包之间的导入,去掉循环导入就可以了。 比如有两个 package,下面两种情况会出现报错: import( "package A" "package B" ) 第一种:如果 package A 中已经导入 package B,而本原创 2020-09-30 16:30:51 · 1064 阅读 · 0 评论 -
go-defer的用法及执行原理
Go 中有几个比较特殊的关键字,如 defer,尤其 defer+panic+recover的组合可以发挥出 java 中 try...catch...fanilly 的作用,功能非常强大,值的去深入学习。同时他们每个又有自身的特性,这一节我们先来理解一下 defer。 defer 关键字在 go 中的使用率算是非常高的,类似于 finally 与 析构函数的作用,用来做方法的善后工作。 1. 怎么使用? defer 后面会接受一个函数,但该函数不会立刻被执行,而是等到包含它的程序返回时(包含它的函数执行了原创 2020-09-30 16:24:31 · 1847 阅读 · 0 评论 -
go-在Mac,linux及Windows下进行交叉编译
go语言没有如 java 一样的 jvm 虚拟机,那么它是如何实现在跨平台运行的呢? 实际上 go 语言使用了另外一种思路,java是一处编译处处使用,而go是一次代码处处编译吧(可能我这个名字起的不太好)。 说句人话,它直接将代码编译成不同平台对应的机器码,在不同平台上直接运行,根本不需要虚拟机,这也是我认为 go 最大的好处了(不过它的语法实在是太扯了)。 说到这里,它到底怎么用呢?就不得不提交叉编译这个概念了,因为我们一般是在 windows/mac 开发,在linux上部署。也就是说我们需要在 wi原创 2020-09-30 16:21:11 · 1128 阅读 · 0 评论 -
go-指针数组与数组指针的区别
首先回顾一点,在go中变量的参数传递都是值传递(也就是拷贝),而引用传递必须用指针来传递地址,这就是与java最大的不同,因为java中的对象传递都是引用传递。 1. 结果输出区别 red, yellow, blue := "red", "yellow", "blue" // 普通数组 colors := [3]string{red,yellow,blue} fmt.Println(colors) // [red yellow blue] // 数组指针 var ap *[3]string = &a原创 2020-09-30 16:16:14 · 292 阅读 · 0 评论 -
go-数据类型没有隐式转换
go语言的静态性体现在类型上,需要显示定义与显示转换,是一种强类型语言。 var str string = "hello world" 之所以下面这种写法也可以通过,是因为编译器在编译期间自动做了类型推断,编译器会对数据进行类型检查。 // 是可以编译通过的 str := "hello world" 而实际上不同类型的数据是不能赋值与传参的 str := "hello world" fmt.Println("str的长度:%d" + len(str)) // 会报错的,字符串无法与数字类型相加 go原创 2020-07-30 14:05:52 · 701 阅读 · 1 评论 -
go-基本数据类型及范围-与Java有很大区别
1. 基本数据类型 数值型 int 浮点型 float bool byte 2. int 范围 int 范围 int8 -128 - 127 int16 -323768 - 323767 int32 -2,147,483,648 -> 2,147,483,647 int64 -9,223,372,036,854,775,808 -> 9,223,372,036,854,775,807 uint8 0 - 255 uint16 0 - 65535 uin原创 2020-07-30 14:04:39 · 577 阅读 · 0 评论 -
go-包引入的不同方式-点,下划线与别名操作
今天在使用go语言进行数据库连接的时候,发现了一种很特别的包导入方式 import ( _ "github.com/go-sql-driver/mysql" "github.com/jinzhu/gorm" ) 包前面有个下划线,这是怎么意思呢? 怀着好奇的态度去研究了一下包的导入方式,发现有好几种特殊的导入方法,让我们一一去揭开它的神秘面纱。 正常导包 import ( "fmt" // 标准库 "./hello" // 相对路径导入,当前文件同一及的hello文件夹 "uti原创 2020-07-30 14:02:08 · 321 阅读 · 0 评论