我们知道Golang切片(slice)在容量不足的情况下会进行扩容,扩容的原理是怎样的呢?是不是每次扩一倍?下面我们结合源码来告诉你答案。一、源码Version:go1.15.6src/runtime/slice.go//go1.15.6源码src/runtime/slice.gofuncgrows...
我就废话不多说了,大家还是直接看代码吧~funcmain(){varachanstringa=make(chanstring)gosendDataTo(a)gotiming()getAchan(10*time.Second,a)}funcsendDataTo(achanstring){for{a
iniconf博主前两天在写一个小的go语言项目,想找一个读取ini格式配置和的三方库,在网上找了一圈感觉都不是很好用,使用起来非常的奇怪,于是自己写了一版,还有两个接口没有实现,在项目中修改或删除配置项后更新到文件中,等待后续有时间了再写,希望用的朋友感觉不错点个赞github地址描述使用inic...
当httpclient返回值为不为空,只读取responseheader,但不读body内容就执行response.Body.Close(),那么连接会被主动关闭,得不到复用。测试代码如下://xiaorui.ccfuncHttpGet(){for{fmt.Println("new&quo...
今天是golang专题的第13篇文章,我们一起来聊聊golang当中的并发与Goroutine。在之前的文章当中我们介绍完了golang当中常用的使用方法和规范,在接下来的文章当中和大家聊聊golang的核心竞争力之一,并发模型与Goroutine。我们都知道并发是提升资源利用率最基础的手段,尤其是...
看到有个例子实现了一个类似于核弹发射装置,在发射之前还是需要随时能输入终止发射。这里就可以用到cahnnel配合select实现多路复用。select的写法用法有点像switch。但是和switch不同的是,select的一个case代表一个通信操作(在某个channel上进行发送或者接收)并且会包...
如果全局变量只读取那自然是不需要加锁的如果全局变量多进程读,多进程写,那自然是需要加读写锁的但是如果全局变量只有一个进程写,其他进程读呢?如果采用COW的方式,写进程只是通过单次赋值的方式来更新变量,是否就可以不加锁了呢?就第三种情况而言:当然我们通过gobuild-race或者gorun-race...
1.获取URL参数GET请求参数通过URL传递URL参数可以通过DefaultQuery()或Query()方法获取DefaultQuery()若参数不存在,返回默认值,Query()若参数不存在,返回空串user_id:=com.StrTo(ctx.Query("user_id"...
golangint转float方法一:强转:代码如下:import"fmt"funcmain(){varmoneyintmoney=1fmt.Println(float64(money)/float64(100))}输出结果:0.01方法二:高精度转:代码如下:import(&q...
个人常用函数funcIsContain(items[]string,itemstring)bool{for_,eachItem:=rangeitems{ifeachItem==item{returntrue}}returnfalse}使用方法varword:="my"varsen...
golang中多个defer的执行顺序引用TureGo中的一个示例:packagemainimport"fmt"funcmain(){fmt.Println("counting")fori:=0;i<10;i++{deferfmt.Println(i)}...
因在做license注册机制当中,有对根据本地RSApem密钥文件判断出RSA的公私密钥长度的需求(即:根据pem内容判断出RSA密钥是1024位或者2048位,或者其他位数等),因此个人通过思考,摸索整理出一个方法,予以记录,备用,分享。packagemainimport("crypto...
基于Go Interface{}==Nil 的几种坑及原理分析
本文是Go比较有名的一个坑,在以前面试的时候也被问过,为什么想起来写这个?因为我们线上就真实出现过这个坑,写给不了解的人在使用iferr!=nil的时候提高警惕。Go语言的interface{}在使用过程中有一个特别坑的特性,当你比较一个interface{}类型的值是否是nil的时候,这是需要特别...
方案一funcmd5V(strstring)string{h:=md5.New()h.Write([]byte(str))returnhex.EncodeToString(h.Sum(nil))}方案二funcmd5V2(strstring)string{data:=[]byte(str)has:=...
问题描述:有一串数字1到5,按照下面的关于顺序的要求,重新排列并打印出来。要求如下:2在5前出现,3在2前出现,4在1前出现,1在3前出现。该问题是一个非常典型的拓扑排序的问题,一般解决拓扑排序的方案是采用DFS-深度优先算法,对于DFS算法我的浅薄理解就是递归,因拓扑排序问题本身会有一些前置条件(...
目标:在64位linux系统上编译出32位程序。操作:1.执行goenv查看当前go环境配置2.执行exportGOARCH=386配置go输出系统平台为32位3.gobuild编译程序4.使用filemain指令查看编译出的可执行程序是否为32位实践图片:补充:golangfloat32/64与[...
要判断interface空的问题,首先看下其底层实现。interface底层结构根据interface是否包含有method,底层实现上用两种struct来表示:iface和eface。eface表示不含method的interface结构,或者叫emptyinterface。对于Golang中的大...
goproxyGoHTTP(S)代理库,支持中间人代理解密HTTPS项目地址安装gogetgithub.com/ouqiang/goproxy使用packagemainimport("net/http""time""github.com/ouqian...
下载安装包:国内的(不用翻墙):Golang中的Nil的场景分析官网(需翻墙):https://golang.org这里使用的的是第一种Golang中的Nil的场景分析下载后解压到本地目录结构:配置环境变量path中配置到bin上面只要是弄过开发都应该可以搞定。然后任意shell环境监察配置是否成功...
实现目的:实现字符串切片去重,只是两个字符完全相同时,去除一个。实现方式:考虑两种,一种是常规的双重循环去除,另一种是利用map的key的唯一性实现。1、通过双重循环来过滤重复元素方法1,思路:利用for双重循环,新建一个slice,遍历原slice中的每一个元素,每一次判断这个元素和后面元素是否相...
- 上一页
- 下一页