
go
1Goer
这个作者很懒,什么都没留下…
展开
-
常见的Tracing系统
StackDriver Trace (Google Cloud)-https://cloud.google.com/trace/ Zipkin(twitter-java) - https://github.com/openzipkin/zipkin Jaeger(uber-go) - https://www.jaegertracing.io/ Appdash(golang) https://github.com/sourcegraph/appdash X-ray(aws) https://aws.a原创 2021-03-18 14:28:02 · 322 阅读 · 0 评论 -
go mod报错at revision v0.0.6: unknown revision v0.0.6
mac版解决方法(windows同理)1.1 找到.gitconfigvim ~/.gitconfig1.2 增加相关标签[url "git@domain:"]insteadOf = https:/domain/domain替换成对应自己的域名如:[url "git@git.baidu.com:"]insteadOf = https:/git.baidu.com/原创 2021-02-04 10:06:10 · 2912 阅读 · 1 评论 -
golang之crc32算法解密字符串
根据实验我们知道crc32算法比md5算法快4倍左右,所以研究了下golang的crc32的解密。package mainimport ( "fmt" "hash/crc32")func main() { intValue :=getIntvalKey("Hello,World!") fmt.Print(intValue)}func getIntvalKey(strKe...原创 2020-03-14 11:17:42 · 1749 阅读 · 0 评论 -
字符串哈希算法——BKDRHash之golang实现
package mainimport "fmt"func main() { hashValue := BKDRHash("Hello,World!") fmt.Print(hashValue)}func BKDRHash(str string) uint64 { seed := uint64(131) // 31 131 1313 13131 131313 etc.. has...原创 2020-03-14 10:41:28 · 1683 阅读 · 1 评论 -
go语言http请求(一)
我们在开发的过程中多多少少会要跟其他服务做交互,很多都是http请求,但是在go语言里面怎么样请求http请求,今天先讲比较初级的。示例如下:GETimport ( "fmt" "net/http" "io/ioutil")func main(){ response,err := http.Get("http://www.baidu.com") if(err!=nil){ ...原创 2019-04-12 15:52:29 · 4946 阅读 · 0 评论 -
golang之import导入包的一些特殊用法
我们学习了golang之后,晓得关键字import是go的包导入语法,而且我们的第一个程序通常都需要输出hello world。示例如下: import( "fmt" ) fmt.Println("hello world")我们看到golang需要输出内容,需要引入包fmt;相对于php就比较麻烦了。上面这种引入方式是比较常见的方式,但是我们通常...原创 2019-04-11 12:44:48 · 2078 阅读 · 0 评论 -
go学习之方法关联到类型func(f *file)method()int{}
很多人可能跟我一样疑惑,为什么go的方法关键字会跟上(f *file),而file是struct结构,我们来看下【Go语言高级编程】这本书是怎么样讲解的?方法方法一般是面向对象编程(OOP)的一个特性,在C++语言中方法对应一个类对象的成员函数,是关联到具体对象上的虚表中的。但是Go语言的方法却是关联到类型的,这样可以在编译阶段完成方法的静态绑定。面向对象编程更多的只是一种思想,下面我们实现...原创 2019-04-10 21:20:09 · 853 阅读 · 0 评论 -
【go学习笔记】如何用Go实现单链表
一、概念介绍下面这副图是我们单链表运煤车队。每节运煤车就是单链表里的元素,每节车厢里的煤炭就是元素中保存的数据。前后车通过锁链相连,作为单链表运煤车,从1号车厢开始,每节车厢都知道后面拉着哪一节车厢,却不知道前面是哪节车厢拉的自己。第一节车厢没有任何车厢拉它,我们就叫它车头,第五节车厢后面拉其他车厢,我们称为车尾。作为单链表它最大的特点就是能随意增加车队的长度,也能随意减少车队的长度。...转载 2018-08-21 13:57:55 · 1123 阅读 · 0 评论 -
Golang学习包之【io/ioutil】
概况Package ioutil 实现了一些 I/O 实用程序功能。索引// Discard 是一个 io.Writer 接口,调用它的 Write 方法将不做任何事情// 并且始终成功返回。var Discard io.Writer = devNull(0)//ReadAll 从 r 读取,直到出错或 EOF 并返回它读取的数据。//成功的调用返回 err == nil,而不是 ...转载 2019-04-12 16:13:03 · 3060 阅读 · 0 评论 -
go struct结构体转json体
package mainimport ( "encoding/json" "fmt" "os")func main() { type ColorGroup struct { ID int Name string Colors []string } group := ColorGroup{ ID: 1, Name: "Reds", ...原创 2019-05-15 10:20:52 · 3384 阅读 · 0 评论 -
go 通过指针修改struct结构体的值
package mainimport ( "fmt")type userInfo struct { userId string userName string}func main() { var userInfos []*userInfo userInfos = append(userInfos, &userInfo{userId: "1...原创 2019-05-15 10:24:38 · 5204 阅读 · 0 评论 -
go struct{}的几种特殊用法
参考:https://blog.youkuaiyun.com/kturing/article/details/80557280转载 2019-05-15 10:27:32 · 2969 阅读 · 0 评论 -
go字符串截取
当我在go语言编程过程中第一次碰到需要截取字符串的时候,首先想到的是 strings 包里面可能有相关方法~我还是太年轻了,这些年都被脚本语言惯坏了~好吧,只能自己搞了,思路也很清晰,把字符串转成字节数组,然后使用slice切片得到其中想要截取的一段,最后再通过 T() 强制类型转换还原成字符串,一开始比较简单:s := "abcdefg"s = string([]byte(s)[:3])...转载 2019-05-20 22:05:11 · 11019 阅读 · 4 评论 -
golang下划线(underscore) 总结
一、概述“_” 可以简单理解为赋值但以后不再使用,在golang中使用的比较多,使用的场合也很多,稍作总结;二、场景1、import1 import _ "net/http/pprof"引入包,会调用包中的初始化函数,这种使用方式仅让导入的包做初始化,而不适用包中其他功能;2、用在返回值1 for _, v := range Slice {}2 _, err := func()...转载 2019-05-13 16:59:59 · 662 阅读 · 0 评论 -
【golang学习笔记】Plugin初探
前言最近在学习fabric 1.2版本的新特性,其中有一个是实现了交易背书和区块结果验证这两个原本由系统链码escc和vscc负责的模块的可插拔。它们的可插拔用到了Go的plugin技术,这也是我第一次知道Go Plugin的概念(虽然在Go 1.8版本就有了),于是准备探一探究竟Go Plugin是什么,怎么用。什么是Go PluginGolang是静态编译型语言,在编译时就将所...转载 2018-08-02 15:23:17 · 2909 阅读 · 0 评论 -
golang学习资源整理
图书【golang圣经】https://books.studygolang.com/gopl-zh/ch0/ch0-03.html【golangweb编程】https://github.com/astaxie/build-web-application-with-golang/tree/master/zh 【golang 语言高级编程】https://github.com/chai20...原创 2018-08-02 10:38:09 · 1176 阅读 · 0 评论 -
go学习笔记之基础变量注意点
定义变量 vname1, vname2, vname3 := v1, v2, v3这种只能用在函数内部;在函数外部使用则会无法编译通过,所以一般用var方式来定义全局变量变量定义之下划线’_’ _, b := 34, 35_(下划线)是个特殊的变量名,任何赋予它的值都会被丢弃声明的变量未使用则报错Go对于已声明但未使用的变量会在编译阶段报错,比如下面...原创 2018-03-18 21:51:28 · 176 阅读 · 0 评论 -
go学习笔记之常量注意点
常量之字符串在Go中字符串是不可变的,例如下面的代码编译时会报错:cannot assign to s[0] var s string = “hello” s[0] = ‘c’但如果真的想要修改怎么办呢?下面的代码可以实现: s := “hello” c := []byte(s) // 将字符串 s 转换为 []byte 类型 c[0] = ‘c’ ...原创 2018-03-18 21:58:49 · 276 阅读 · 0 评论 -
Go程序设计的一些规则
Go之所以会那么简洁,是因为它有一些默认的行为: 大写字母开头的变量是可导出的,也就是其它包可以读取的,是公有变量;小写字母开头的就是不可导出的,是私有变量。 大写字母开头的函数也是一样,相当于class中的带public关键词的公有函数;小写字母开头的就是有private关键词的私有函数。...原创 2018-03-18 22:01:37 · 366 阅读 · 0 评论 -
[学习笔记之go] 基础篇
go重要概念Go程序是通过package来组织的package (在我们的例子中是package main)这一行告诉我们当前文件属于哪个包,而包名main则告诉我们它是一个可独立运行的包,它在编译后会产生可执行文件 每一个可独立运行的Go程序,必定包含一个package main,在这个main包中必定包含一个入口函数main,而这个函数既没有参数,也没有返回值。...原创 2018-06-15 15:59:09 · 259 阅读 · 0 评论 -
[go学习笔记] 内置函数new以及struct初始化有什么区别?
new() 含义介绍这是一个用来分配内存的内置函数,它的第一个参数是一个类型,不是一个值,它的返回值是一个指向新分配的 t 类型的零值的指针func new(t Type) *Type strut{} 含义介绍直接使用struct{} 来初始化strut时,返回的是一个struct类型的值,而不是指针两者是不一样的编写代码进行对比package mainim...原创 2018-07-09 17:21:25 · 4049 阅读 · 0 评论 -
【go学习笔记】interface妙用
空interface空interface(interface{})不包含任何的method,正因为如此,所有的类型都实现了空interface。空interface对于描述起不到任何的作用(因为它不包含任何的method),但是空interface在我们需要存储任意类型的数值的时候相当有用,因为它可以存储任意类型的数值。它有点类似于C语言的void*类型// 定义a为空接口var a i...原创 2018-07-09 17:42:37 · 1109 阅读 · 0 评论 -
【go学习笔记】理解Go语言的nil 【转】
最近在油管上面看了一个视频:Understanding nil,挺有意思,这篇文章就对视频做一个归纳总结,代码示例都是来自于视频。nil是什么相信写过Golang的程序员对下面一段代码是非常非常熟悉的了:if err != nil { // do something....}当出现不等于nil的时候,说明出现某些错误了,需要我们对这个错误进行一些处理,而如果等于n...转载 2018-07-11 18:20:52 · 12198 阅读 · 0 评论 -
【golang学习笔记】单元测试之GoConvey
简介GoConvey类似于C/C++语言的测试框架GTest,是一款针对Golang的测试框架,可以管理和运行测试用例,同时提供了丰富的断言函数,并支持很多 Web 界面特性。Golang虽然自带了单元测试功能,并且在GoConvey框架诞生之前也出现了许多第三方测试框架,但没有一个测试框架像GoConvey一样能够让程序员如此简洁优雅的编写测试代码。安装在命令行输入命令:...转载 2018-07-23 12:47:38 · 1591 阅读 · 0 评论 -
【golang】性能分析工具Pprof
介绍Pprof是golang程序一个性能分析的工具,可以查看堆栈、cpu信息等pprof有2个包:net/http/pprof以及runtime/pprof二者的关系 net/http/pprof包只是使用runtime/pprof包来进行封装了一下,并在http端口上暴露出来。web 服务器假如你的go呈现是用http包启动的web服务器,当你想要查看web服务器的...原创 2018-07-18 11:09:19 · 1629 阅读 · 0 评论 -
【golang】性能分析工具Pprof
介绍Pprof是golang程序一个性能分析的工具,可以查看堆栈、cpu信息等pprof有2个包:net/http/pprof以及runtime/pprof二者的关系 net/http/pprof包只是使用runtime/pprof包来进行封装了一下,并在http端口上暴露出来。web 服务器假如你的go呈现是用http包启动的web服务器,当你想要查看web服务器的...原创 2018-07-18 11:09:22 · 309 阅读 · 0 评论 -
【golang】panic、defer以及recover 深入浅出
吐糟点Golang这么时尚的语言是没有类似try..catch 这种异常处理机制,而是使用 panic 和 recover处理异常. 其实相当于python的raise介绍golang的异常处理组合 panic,defer,recover,跟java中的try catch finially是类似的。 但是从语言的用户体验来说,不怎么好。 但考虑到golang的场景基本是系统高性能层...转载 2018-07-18 14:27:13 · 359 阅读 · 0 评论 -
【golang学习笔记】之单元测试
介绍编写单元测试规范 1、文件名:_test.go 结尾 2、函数名:Test 开头 3、入参:(t *testing.T) 4、内置库:testing 5、报错信息:使用 testing 内置的方法:Errorf、Error 、Fail、Failed、Fatal、Fatalf、Log、Logf 等执行单元命令执行命令:go test接下来...原创 2018-07-20 17:21:15 · 938 阅读 · 0 评论 -
【golang学习笔记】go依赖管理之govendor
前述我们都知道php以及java都有自己的依赖包管理工具,那么go有吗?当然有的,go到了1.5版本时代,官方引入包管理的设计,加了 vendor 目录来支持本地包管理依赖。官方 wiki 推荐了多种支持这种特性的包管理工具,如:Godep、gv、gvt、glide、govendor等。govendor简介对于 govendor 来说,主要存在三种位置的包:项目自身的包组织...原创 2018-07-26 10:51:49 · 1339 阅读 · 0 评论 -
【golang学习笔记】之实现工厂模式的思考
模式从业务场景中总结出来,然而并不是固定的。起因有一个多平台的抓取需求,必然要提炼一个方法,根据平台类型获取实例,每个实例有各自的实现。这是个典型工厂模式。经典OOP伪代码如下:class siteModel{ url string func factory(siteName, url string){ if siteName == "sit...转载 2018-07-20 22:57:58 · 387 阅读 · 0 评论