![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
golang
YuNansen
我的头条号用户名:univerce
展开
-
goland部分go代码显示unable to resolve并报红问题
今天尝试了一下goland中安装go并启动项目,发现了一个奇怪的问题,例如如下代码:_, _ := strconv.Atoi(XXX) 一直报红,显示Atoi一直找不到。(unable to resolve).但是编译项目和debug项目都是正常的。经过查找网上的资料,无论是勾选什么选项或者是选择清空gland的缓存并重启,此错误还是存在。后来经过尝试,发现如下方式可以解决问题:手动在go官网下载go并安装,然后在Goland-Settings-Go-GOROOT中,选择go为自己手动安装原创 2021-03-14 14:38:18 · 4216 阅读 · 5 评论 -
Go 语言 JSON 的实现原理
转自:https://draveness.me/golang/docs/part4-advanced/ch09-stdlib/golang-json/JSON(JavaScript 对象表示,JavaScript Object Notation)作为一种轻量级的数据交换格式1,在今天几乎占据了绝大多数的市场份额。虽然与更紧凑的数据交换格式相比,它的序列化和反序列化性能不足,但是它也提供了良好的可读性与易用性,在不极致机制性能的情况下,JSON 是一种非常好的选择。设计原理几乎所有的现代编程语言都会将转载 2020-12-24 21:37:09 · 1095 阅读 · 0 评论 -
go中的sync.Mutex 和 sync.RWMutex
介绍golang 中的 sync 包实现了两种锁:Mutex:互斥锁RWMutex:读写锁,RWMutex 基于 Mutex 实现Mutex(互斥锁)Mutex 为互斥锁,Lock() 加锁,Unlock() 解锁在一个 goroutine 获得 Mutex 后,其他 goroutine 只能等到这个 goroutine 释放该 Mutex使用 Lock() 加锁后,不能再继续对其加锁,直到利用 Unlock() 解锁后才能再加锁在 Lock() 之前使用 Unlock(转载 2020-11-29 11:54:48 · 517 阅读 · 0 评论 -
Go语言命令行复习笔记
Go语言自带有一套完整的命令操作工具。go clean这个命令是用来移除当前源码包里面编译生成的文件。我一般都是利用这个命令清除编译文件,然后github递交源码,在本机测试的时候这些编译文件都是和系统相关的,但是对于源码管理来说没必要。go fmt有过C/C++经验的读者会知道,一些人经常为代码采取K&R风格还是ANSI风格而争论不休。在go中,代码则有标准的风格。由于之前已经有的一些习惯或其它的原因我们常将代码写成ANSI风格或者其它更合适自己的格式,这将为人们在阅读别人的代码时添加不必转载 2020-09-23 19:44:04 · 157 阅读 · 0 评论 -
记录gorm union和软删除一起使用遇到的一个奇怪问题
众所周知,我们在用go写web服务的时候,gorm是我们最常用的一个orm框架。最近我却遇到了一个奇怪的问题,当我在使用union的时候,如果触发了gorm的软删除的话,最终gorm帮我们执行的sql会有语法错误。首先在这里我先介绍下gorm的软删除:gorm文档软删除如果一个 model 有 DeletedAt 字段,他将自动获得软删除的功能! 当调用 Delete 方法时, 记录不会真正的从数据库中被删除, 只会将DeletedAt 字段的值会被设置为当前时间。db.Delete(&us原创 2020-07-08 20:07:24 · 3278 阅读 · 0 评论 -
Docker学习笔记
为什么使用Docker在我们日常开发中,如果环境不一致,代码跑出来的效果肯定有很多问题的。Docker 就可以达到统一运行环境的目的。Docker 的精髓就在于可以保证各个环境的一致性。Docker与虚拟机的比较一个经常拿来跟 Docker 对比的是虚拟机;虚拟机是虚拟了一个完整的系统;比如说我们可以在 Mac 电脑上启动一个 Windows 系统的虚拟机;虚拟机的优点是隔离性非常的强...原创 2020-05-04 19:36:32 · 247 阅读 · 0 评论 -
Goland配置断点(带参数)
最近我在进行Go的相关开发,在使用Goland开发的同时,我们经常要使用断点这个常见方式去辅助开发,那么我来大概说说我的Goland是如何使用断点开发的。首先,我们可以在Edit Configuration中进行配置,但是我的窗口中并没有Go Application选项,那么该怎么办呢?首先,我们找到我们入口的main.go中的main入口方法,如下图:点击第三项,也就是Create这一...原创 2020-04-07 14:16:23 · 5582 阅读 · 0 评论 -
golang学习笔记(三)
mysql支持插件式的存储引擎。myisam和innodb。myisam查询速度快,只支持表锁,不支持事务。innodb整体速度快,支持表锁和行锁,支持事务。事务的特点:acid:原子性,一致性(事务开始和结束之间的中间状态不会被其他事务看到),隔离性(两个事务是互相隔离的),持久性(事务的操作是不会丢失的)。隔离性:隔离级别:·Serializable (串行化):可避免脏读、不可重...原创 2020-03-03 11:11:13 · 241 阅读 · 0 评论 -
golang学习笔记(二)
worker pool(goroutine池):Go语言中的goroutine虽然相对于系统线程来说比较轻量级,但是在高并发量下的goroutine频繁创建和销毁对于性能损耗以及GC来说压力也不小。充分将goroutine复用,减少goroutine的创建/销毁的性能损耗,这便是grpool对goroutine进行池化封装的目的。例如,针对于100W个执行任务,使用goroutine的话需要不停...原创 2020-02-03 09:06:15 · 1484 阅读 · 0 评论 -
golang学习笔记(一)
接口还可以嵌套接口。一个接口可以包含一个或多个其他的接口,这相当于直接将这些内嵌接口的方法列举在外层接口中一样。空接口 interface{}所有的类型都实现了空接口。任意类型的变量都能当成空接口。...原创 2020-01-17 09:18:51 · 345 阅读 · 0 评论 -
我的Go之路
从知乎上看来的一篇文章,感触很深,特意做一个记录。全职写Go已经很多年了,我对于Go的认识,大概经历过三次升级,但每一次突破,都不是Go语言本身带来的,而是从其它语言领悟的,可见“功夫在诗外”。我想和你谈谈,这三次升级的关键的概念,它们是:接口,并发,反射。没有一个概念是轻易理解的,就像你当初写程序无法一下子理解变量一样,它们更甚。第一次是当年移动开发热潮,我跟风买了Macbook Pro,装...转载 2019-12-16 17:15:40 · 249 阅读 · 0 评论 -
深入理解Golang之channel
前言Golang在并发编程上有两大利器,分别是channel和goroutine,这篇文章我们先聊聊channel。熟悉Golang的人都知道一句名言:“使用通信来共享内存,而不是通过共享内存来通信”。这句话有两层意思,Go语言确实在sync包中提供了传统的锁机制,但更推荐使用channel来解决并发问题。这篇文章会先从channel的用法、channel的原理两部分对channel做一个较为深...转载 2019-12-13 15:37:40 · 460 阅读 · 0 评论 -
go-simplejson遇到的一些小问题的笔记
最近在使用go写一些项目,为了图方便,使用了go的json解析库go-simplejson(https://github.com/bitly/go-simplejson)。 因为自己经验比较缺乏,遇见了一些小问题,特意在这里记录一下,以供自己日后查阅。首先自己要解析的json如下:{ errorCode: 0, message: "操作成功", result: { data:{ ...原创 2019-03-03 14:10:05 · 2201 阅读 · 0 评论 -
go初学踩坑:ineffectual assignment to 变量 (ineffassign)错误
最近在写一些go的代码,在写到一个一行代码的时候,突然出现了这么一个错误:ineffectual assignment to content (ineffassign)其中content是我的一个变量,我的代码如下:func main() { content, code := httpGet("https://www.baidu.com/")}func httpGet(url st...原创 2019-02-11 20:48:24 · 27837 阅读 · 1 评论