栏目: Golang

Golang 如何通过反射创建新对象

废话少说,直接贴代码~typeAstruct{Namestring}//测试unitfuncTestReflect(t*testing.T){reflectNew((*A)(nil))}//反射创建新对象。funcreflectNew(targetinterface{}){iftarget==nil...

2021-04-28 186 0 0 阅读全文

Go语言利用Ssh连接服务器的方法步骤

学习了Go语言后,打算利用最近比较空一点,写一个前端部署工具,不需要每次都复制粘贴的麻烦,需要完成部署的第一步就需要连接远程服务器打开sshserver首先我们想要利用ssh连接服务器的前提是服务器打开了sshserver,ssh分为client和server端,如果打开了client可以连接远程服...

2021-04-17 194 0 0 阅读全文

Golang中的Time.Duration类型用法说明

在Time包中,定义有一个名为Duration的类型和一些辅助的常量:typeDurationint64const(NanosecondDuration=1Microsecond=1000*NanosecondMillisecond=1000*MicrosecondSecond=1000*Milli...

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

Golang Time包做时间转换操作

Time类型Now方法表示现在时间。funcDate(yearint,monthMonth,day,hour,min,sec,nsecint,loc*Location)Time返回现在的时间,func(tTime)Unix()int64将时间转换为unix时间戳,因为duration的限制,所以应该...

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

Golang 实现两个结构体复制字段

实际工作中可能会有这样的场景:两个结构体(可能类型一样),字段名和类型都一样,想复制一个结构体的全部或者其中某几个字段的值到另一个(即merge操作),自然想到可以用反射实现packagemainimport"fmt"import"reflect"//用b的所...

2021-04-28 863 0 0 阅读全文

详解用Go语言实现工厂模式(Golang经典编程案例)

golang中的struct没有构造函数,一般可以使用工厂模式来解决这个问题。这个模式本身很简单而且使用在业务较简单的情况下。一般用于小项目或者具体产品很少扩展的情况(这样工厂类才不用经常更改)。代码结构如下:分别有main.go和student.go两个文件。在student.go中:packag...

2021-04-17 216 0 0 阅读全文

Golang Casbin Gorm权限控制

Iris+Casbin权限控制实战在木犀的PaaS云平台的设计中,需要有一个细粒度比较小的权限控制系统。不同用户对不同的资源,拥有不同的权限。土办法已经不管用了,我们需要更系统,更规范的权限控制系统。本文讲的就是如何将权限控制库Casbin接入IrisWeb框架。http://zxc0328.git...

2021-07-22 237 0 0 阅读全文

Golang实现四种负载均衡的算法(随机,轮询等)

随机负载随机挑选目标服务器packageload_balanceimport("errors""math/rand")//随机负载均衡typeRandomBalancestruct{curIndexintrss[]string}func(r*RandomBal...

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

Golang实现简单随机负载均衡

Golang实现随机负载均衡负载均衡简介从设备角度实现负载均衡:硬件负载均衡:由专门的负载均衡器服务提供商,在你的服务器和外部网络之间架设服务商的负载均衡器。服务商提供设备和方案帮你处理流量的均衡,不过因为比较费钱包国内没什么人用软件负载均衡:包括家喻户晓的Nginx,LVS,Tengine(阿里版...

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

解决Vscode中Golang插件依赖安装失败问题

vscode中安装ms-vscode.go插件后可以开启对go语言的支持,ms-vscode.go插件需要依赖一些工具,安装完成后提示gocodego-outlinego-symbolsgurugorenamegocode-gomodgoreturnsgolintInstallinggithub.c...

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

Golang之反射和断言的具体使用

1.反射反射这个概念绝大多数语言都有,比如Java,PHP之类,golang自然也不例外,反射其实程序能够自描述和自控制的一类机制。比如,通过PHP的反射,你可以知道一个类有什么成员,有什么方法。而golang,也能够通过官方自带的reflect包来了解各种变量类型及其信息。下面我们通过一个例子查看...

2021-04-30 188 0 0 阅读全文

Go语言中Nil判断引起的问题详析

代码封装是百干不厌的事,但有时候封装会导致一些问题。本文记录了个人在封装http请求时遇到的一个和nil判断有关的问题。nil是什么nil内置的一个变量,用来代表空值,且只有指针、channel、方法、接口、map和切片可以被赋值为nil。buildin/buildin.go://nilisapre...

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

Golang单元测试与覆盖率的实例讲解

1概述C/C++和Java(以及大多数的主流编程语言)都有自己成熟的单元测试框架,前者如Check,后者如JUnit,但这些编程框架本质上仍是第三方产品,为了执行单元测试,我们不得不从头开始搭建测试工程,并且需要依赖于第三方工具才能生成单元测试的覆盖率。相比之下,Go语言官方则提供了语言级的单元测试...

2021-04-14 197 0 0 阅读全文

Golang之数据校验的实现代码示例

目前大都是使用validator安装gogetgopkg.in/go-playground/validator.v9原理当然只能通过反射来实现了,之前写过一篇反射的文章golang之反射和断言,里面有写到怎么通过反射获取structtag。读取structtag之后就是对里面的标识符进行识别,然后进...

2021-04-30 165 0 0 阅读全文

Go结构体嵌套的切片数组操作

看代码吧~packagemainimport("fmt")typeXCDataStustruct{Idint`json:"id"xorm:"id"`Namestring`json:"name"xorm:"nam...

2021-04-29 138 0 0 阅读全文

MySQL在线DDL工具 Gh-Ost的原理解析

一.简介gh-ost基于golang语言,是github开源的一个DDL工具,是GitHub'sOnlineSchemaTransmogrifier/Transfigurator/Transformer/Thingy的缩写,意思是GitHub的在线表定义转换器。1.1原理主要实现原理,首先建两张表,...

2021-03-18 233 0 0 阅读全文

Golang Json数组拼接的实例

看代码吧~funcmain(){a:=[]byte(`{"Parents":["aaaaa","bbbbbbb"]}`)b:=[]byte(`{"Parents":["Gomez","Mot...

2021-04-29 142 0 0 阅读全文

Golang 获取文件Md5校验的方法以及效率对比

近期有一个需求:获取多个文件md5校验和判断是否存在重复文件,因为文件数量较多,有的文件还比较大,需要处理的文件还没有到位,我就考虑了一下效率的问题。目前我已知的Golang中获取md5校验和的方法有两个这里直接给出实现源码。packagemainimport("crypto/md5&qu...

2021-05-08 296 0 0 阅读全文

Go Map定义的方式及修改技巧

直入正题,我们看下以下代码:packagemainimport("encoding/json""fmt")funcmain(){//第一种声明varlanguagemap[string]stringlanguage=make(map[string]string...

2021-03-27 159 0 0 阅读全文

Golang 实现对Map进行键值自定义排序

看代码吧~//自定义结构体,用来自定义排序typeRecentlyUpdateListMapSorter[]map[string]interface{}//根据MapSorter.Keys进行倒序排序func(ms*RecentlyUpdateListMapSorter)SortReverse(){...

2021-04-29 169 0 0 阅读全文