栏目: Golang

Golang 实现Json类型不确定时的转换

将json转为结构体时,经常会遇到无法确定某个字段类型的情况。在Go中可以使用interface任意类型来解决。//convertjsontostruct//typeuncertainpackagemainimport("fmt""encoding/json"...

2021-03-07 289 0 0 阅读全文

Golang - Sha256加密算法

go调用sha256加密字符串哈希值packagemainimport("fmt""crypto/sha256""io""log""os")funcmain(){//第一种调用方法sum:=sha25...

2021-08-16 326 0 0 阅读全文

Golang DNS服务器的简单实现操作

简单的DNS服务器提供一个简单的可以查询域名和反向查询的DNS服务器。dig命令主要用来从DNS域名服务器查询主机地址信息。查找www.baidu.com的ip(A记录):命令:dig@127.0.0.1www.baidu.com根据ip查找对应域名(PTR记录):命令:dig@127.0.0.1-...

2021-05-01 215 0 0 阅读全文

解决Golang结构体Tag编译错误的问题

写了一个带标签的结构体typeserverstruct{XMLNamexml.Name'xml:"server"'}解决编译错误fieldtagmustbeastring,后来发现是后面标签上引号不正确,不应该是回车键旁边的单引号,而是数字键1旁边的单引号typeserverst...

2021-05-01 184 0 0 阅读全文

解决Golang中Goroutine执行速度的问题

突然想到了之前一直没留意的for循环中开goroutine的执行顺序问题,就找了段代码试了试,试了几次后发现几个有意思的地方,我暂时没有精力往更深处挖掘,希望有golang大神能简单说一说这几个地方是怎么回事。代码:packagemainimport"fmt"funcCount(...

2021-05-01 271 0 0 阅读全文

Golang比较浮点数的大小方式

Golang浮点数比较和运算会出现误差。浮点数储存至内存中时,2的-1、-2……-n次方不能精确的表示小数部分,所以再把这个数从地址中取出来进行计算就出现了偏差。packagemainimport("errors""fmt""github.com/s...

2021-05-01 229 0 0 阅读全文

Golang Slice元素去重操作

合并两个整型切片,返回没有重复元素的切片,有两种去重策略1.通过双重循环来过滤重复元素(时间换空间)//通过两重循环过滤重复元素funcRemoveRepByLoop(slc[]int)[]int{result:=[]int{}//存放结果fori:=rangeslc{flag:=trueforj:...

2021-05-01 328 0 0 阅读全文

深入理解Go Slice结构

slicearray的语法:[4]int{1,2,3,4},[...]int{1,2,3}。在go中array是值类型,这就意味着一个类型为array的变量名并不是一个指针,当传递值是,array总是被复制。slice的语法:[]int{1,2,3,4},make([]int),make([]int...

2021-09-14 145 0 0 阅读全文

解决Golang Post文件时Content-Type出现的问题

同事用php写了一个接口,要上传文件,让我做下测试,直接用curl命令调用成功,然后想用golang写个示例,源码如下:packagemainimport("bytes""fmt""io/ioutil""mime/multipar...

2021-05-01 200 0 0 阅读全文

Golang 实现分片读取Http超大文件流和并发控制

分片读取http超大文件流Golang中的HTTP发送get请求,在获取内容有两种情况。Golang发送httpget请求方式resp,err:=http.Get(sendUrl)iferr!=nil{fmt.Println("出错",err)return}第一种方式是直接全部读...

2021-04-13 227 0 0 阅读全文

Golang 实现Location跳转方式

golang作为互联网时代的C语言,对网络的支持是非常友好的,最近想做个短网址转发使用,自然想到用Golang开发。闲话少说,直接上源码:packagemainimport("fmt""log""net/http")funclogin(wh...

2021-05-01 297 0 0 阅读全文

Go如何删除字符串中的部分字符

go,在删除切片中的元素时,可以使用append(),方式将其中的元素删除。slice:=make([]int,0)slice=append(slice[:k],slice[k+1:])//此方法就是删除切片中位于k中的元素由于字符串也可以进行遍历,但是字符串不可以进行切片操作,也就是只有切片才能使...

2021-04-26 184 0 0 阅读全文

Golang实现AES对称加密的过程详解

AES对称加密简介AES是一个对称密码,旨在取代DES成为广泛使用的标准。是美国联邦政府采用的一种区块加密标准。AES对称加密过程加密解密算法的输入是一个128位分组。这些分组被描述成4×4的字节方阵,这个分组被复制到数组中,并在加密和解密的每一阶段都被修改。在字节方阵中,每一格都是一个字,包含了4...

2021-05-21 241 0 0 阅读全文

Golang通过反射设置结构体变量的值

如果需要动态设置struct变量field的情况下,可以利用reflect来完成。代码如下:packagemainimport("fmt""reflect")//定义结构体PersontypePersonstruct{NamestringAgeint}func...

2021-04-25 205 0 0 阅读全文

解决Golang 反射Interface{}做零值判断的一个重大坑

在对float零值判断时往往只需要和0做==即可,所以曾经int和float都用==0来做对比,比如下方:in:=0.vartmpinterface{}=float32(in)fmt.Println("float0==0:",in==0)fmt.Println("flo...

2021-04-25 286 0 0 阅读全文

Go并发编程实战--信号量的使用方法和其实现原理

信号量是并发编程中常见的一种同步机制,在需要控制访问资源的线程数量时就会用到信号量,关于什么是信号量这个问题,我引用一下维基百科对信号量的解释,大家就明白了。信号量的概念是计算机科学家Dijkstra(Dijkstra算法的发明者)提出来的,广泛应用在不同的操作系统中。系统中,会给每一个进程一个信号...

2021-06-21 254 0 0 阅读全文

深入Golang中的Sync.Pool详解

我们通常用golang来构建高并发场景下的应用,但是由于golang内建的GC机制会影响应用的性能,为了减少GC,golang提供了对象重用的机制,也就是sync.Pool对象池。sync.Pool是可伸缩的,并发安全的。其大小仅受限于内存的大小,可以被看作是一个存放可重用对象的值的容器。设计的目的...

2021-04-25 288 0 0 阅读全文

详解Go与PHP的语法对比

Go是由Google设计的一门静态类型的编译型语言。它有点类似于C,但是它包含了更多的优点,比如垃圾回收、内存安全、结构类型和并发性。它的并发机制使多核和网络机器能够发挥最大的作用。这是GoLang的最佳卖点之一。此外,Go速度快,表现力强,干净且高效。这也是Go如此吸引开发者学习的原因。PHP是一...

2021-07-02 207 0 0 阅读全文

Golang Xorm日志写入文件中的操作

golang访问数据库记录SQL语句:使用的包为:1:github.com/arthurkiller/rollingwriter//写入日志包2:github.com/go-xorm/xorm//xorm包具体实现为:packagemainimport("time""g...

2021-04-10 229 0 0 阅读全文

解决Golang Gin框架跨域及注解的问题

在golang的路上缓慢前进Gin框架跨域问题的解说与方法代码如下:packagemainimport("github.com/gin-gonic/gin""awesomeProject/app/app_routers""strings"&...

2021-03-16 223 0 0 阅读全文