网站首页 成长录 “慢生活”不是懒惰,放慢速度不是拖延时间,而是让我们在生活中寻找到平衡。

Go实现工厂模式的思考
2020-06-10 04:12 admin go思考

模式从业务场景中总结出来,然而并不是固定的。起因有一个多平台的抓取需求,必然要提炼一个方法,根据平台类型获取实例,每个实例有各自的实现。这是个典型工厂模式。经典OOP伪代码如下:__classsiteModel{urlstringfuncfactory(siteName,urlstring){ifsiteName=="...
阅读全文

Go类型转换和断言总结
2020-06-10 04:12 admin go类型转换

普通类型转换将类型名作为函数名,被转换的值作为参数。使用于跨度小的转换。__//[]byte和string的转换b:=[]byte{'a','b','c'}str:=string(b)b=[]byte(str)//intint64int32的转换varxint=0x123456789y:=int32(a)z:=int6...
阅读全文

Go关于defer的一道面试题
2020-06-10 04:12 admin go面试题

请写出输出结果__funcmain(){a:=1b:=2defercalc(a,calc(a,b))a=0defercalc(a,calc(a,b))}funccalc(x,yint){fmt.Println(x,y,x+y)returnx+y}结果是__123022022134考察两个知识点:1.defer是栈调用,...
阅读全文

Go限制请求次数——简陋实现
2020-06-10 04:12 admin go简陋

前些日子写的限制请求次数,结果用的时候发现可以更简单实现。>需求:抓数据的网站限定1秒只能有10次请求由于**发起并发请求几乎是0耗时**的,所以可以选择同时发完所有的请求,然后等到下一个周期。这样控制周期内请求次数只需要一个`ticker`就能搞定:发完请求就阻塞一个周期;而控制同时最大并发只需要一个channel用...
阅读全文

Go 语法基础--学习笔记
2020-06-10 04:12 admin go语法

安装以及基本语法参考官方文档即可。入门资源分享:***环境变量*GOPATH是什么?GOPATH设置目录用来存放Go源码,包管理路径,Go的可运行文件,以及相应的编译之后的包文件。`$GOPATH`下通常会存在三个文件夹:src(存放源代码),pkg(包编译后生成的文件),bin(编译生成的可执行文件)。`$GOPAT...
阅读全文

golang原生http和rpc服务集成
2020-06-10 04:11 admin golangHTTP

今天做了个小实验,验证了用go语言的原生http模块和编写的http服务器可以利用rpc模块同时提供rpc调用功能。但是遗憾的是,如果是用fcgi模块编写的服务器就不能集成rpc服务。关键点:第一,rpc功能要用rpc.NewServer新建服务对象,不能用默认对象,因为只有新建对象的HandleHTTP可以设置htt...
阅读全文

go技巧分享(三)
2020-06-10 04:11 admin go分享

这是一个系列文章,主要分享go的使用建议和技巧,每次分享3点,希望你能有所收获。1打印更易读的结构体__packagemainimport"fmt"typeUserstruct{NamestringAgeintAddrstring}funcmain(){u:=User{"user1",12,"addr"}fmt.Pri...
阅读全文

广度优先搜索算法(go)
2020-06-10 04:11 admin go搜索算法

广度优先搜索算法(BreadthFirstSearch,缩写为BFS),又译作宽度优先搜索,或横向优先搜索,是一种图形搜索算法。简单的说,广度优先搜索算法是从根节点开始,沿着树的宽度遍历树的节点。如果所有节点均被访问,则算法中止。借助广度优先搜索算法,可以让你找出两样东西之间的最短距离。本文通过go语言实现广度优先搜索...
阅读全文

关于单元测试(go)
2020-06-10 04:11 admin go单元测试

在最近开发过程中,需要每个模块都写单元测试,由于之前开发没有写单元测试的习惯,突然要求写单元测试,还不知道从何入手,于是花了点时间学习如何写单元测试,收获很多,因此本文算是近期学习单元测试的总结,主要有以下4个方面:1单元测试的定义首先看看什么是单元测试(unittesting),单元测试是将开发人员编写的一个完整的类...
阅读全文

go技巧分享(二)
2020-06-10 04:11 admin go分享

这是一个系列文章,主要分享go的使用建议和技巧,每次分享3点,希望你能有所收获。1并发访问map__packagemainimport"sync"typeMapstruct{sync.RWMutexDatamap[int]int}funcmain(){m:=Map{}m.Data=make(map[int]int)fo...
阅读全文

Golang解析json的特殊情况处理
2020-06-10 04:11 admin golangJson

Go解析json遇到了大数字、不定格式等特殊情况,在此做了一个整理。UnmarshalvsDecode选择哪个要视输入而定。`json.Unmarshal`操作对象是一个`[]byte`,也就意味着被处理的JSON要全部加载到内存。如果有一个加载完的JSON使用`json.Unmarshal`会快一些。`json.De...
阅读全文

Go语言slice和数组的区别
2020-06-10 04:11 admin goslice

Go语言中数组是具有固定长度的相同数据类型元素的序列。而slice的长度可变。个人理解,类似C++中数组和vector的区别。1\.数组1.1初始化__vara1[3]int//3个整数型的数组,初始值是3个0a2:=[5]int{1,2,3}//长度为5,后两位是0vara3=[...]int{6,7,8}//不声明...
阅读全文

第二章 运算
2020-06-10 04:10 admin 第二章运算

2.1运算符全部运算符及分隔符列表运算符及分隔符列表.png优先级一元运算符优先级最高,二元则分成五个级别,从高向低分别是:优先级.png位运算符位运算符.png需要注意的是,位清除是go独有的,和位异或是不同的。它将左右操作数对应二进制位都位1的重置为0(有些类似位图),以达到一次清楚多个标记的目的。__packag...
阅读全文

第三章 流程控制
2020-06-10 04:10 admin 第三章流程

3.1If语句语法格式:__if布尔表达式{/*在布尔表达式为true时执行*/}__if布尔表达式{/*在布尔表达式为true时执行*/}else{/*在布尔表达式为false时执行*/}__if布尔表达式1{/*在布尔表达式1为true时执行*/}elseif布尔表达式2{/*在布尔表达式1为false,布尔表达式...
阅读全文

第一章 类型
2020-06-10 04:10 admin 第一章类型

2.1变量从计算机系统实现角度来看,变量是一段或多段用来存储数据的内存。作为静态类型语言,Go变量总是有固定的数据类型,类型决定了变量内存的长度和存储格式。我们只能修改变量值,无法改变类型。>通过类型转换或指针操作,我们可用不同方式修改变量值,但不能修改变量类型。因为内存分配发生在运行期,所以在编码阶段我们给变量起名来...
阅读全文
顶部 底部