1.接口简介 Interface 是一组抽象方法(未具体实现的方法,仅包含方法名参数返回值的方法)的集合,如果实现了 interface 中的所有方法,即该类型就实现了该接口。 注意: (1)接口中不能含有属性; (2)…
分类:Go
go - 使用 go mod 管理项目依赖
go 1.11开始可以使用更优雅灵活的module机制做包依赖管理,能直接感受到的优点如下: 项目路径可以脱离$GOPATH了,不需要必须放在$GOPATH/src下。 项目内部模块的引入是基于moduleName而不再…
从零开始基于go-thrift创建一个RPC服务
Thrift 是一种被广泛使用的 rpc 框架,可以比较灵活的定义数据结构和函数输入输出参数,并且可以跨语言调用。为了保证服务接口的统一性和可维护性,我们需要在最开始就制定一系列规范并严格遵守,降低后续维护成本。 Thr…
go保存文件到指定的文件夹
框架:gin 语言:golang 作用:保存文件到本地指定文件夹的一个小demo 单文件保存到本地指定目录: package main import ( "fmt" "log" "net/http" "path" "gi…
S3 的一个命令行客户端
使用Golang 实现了一个S3的简易客户端。 目前实现如下功能: 文件的上传 文件的下载 文件的删除 文件大小,更新时间查看 目前已发布1.0.0, 支持Windows和Linux,其他平台自行编译即可。 sessio…
一分钟系列: Go 编程之用时定义
原文发布于我的个人网站: GitDiG.com, 原文链接: 一分钟系列: Go 编程之用时定义. 研究 Go 大神的开源库,常常会有惊喜。以 Dave Cheney 的开源库github.com/pkg/profile…
golang 使用chromedp获取页面请求日志network
package main import ( "context" "io/ioutil" "log" "os" "strings" "time" "github.com/chromedp/cdproto/network" …
【Go源码分析】Go scheduler 源码分析
作者:孙伟 1、进程/线程/协程基本概念 一个进程可以有多个线程,一般情况下固定2MB内存块来做栈,用来保存当前被调用/挂起的函数内部的变量,CPU在执行调度的时候切换的是线程,如果下一个线程也是当前进程的,就只有线程切…
细说Golang的JSON解析
之前一直写一些动态语言,觉得解析JOSN还是很简单的,往往只需要几行代码就能拿到解析好的JSON对象。Go语言自带的json包可以让你在程序中方便的读取和写入 JSON 数据。生成JSON场景相对简单一些,json.Ma…
Caddy源码阅读(一)Run详解
Caddy源码阅读(一)Run详解 前言 本次系列会讲解 caddy 整个生命周期涉及到的源码。 平时我们使用 caddy 都是使用 它的 二进制 分发文件,现在来分析 caddy 的 Run 函数。从最外层逻辑看它都做…
Golang使用zlib压缩和解压缩字符串 compress/zlib
在python的时候就习惯使用zlib进行网页压缩。 golang下同样使用zlib进行压缩解压缩。 zlib官方给出的方法很简单,这里权当一个补充. zlib.NewWriter() 只能传递 []byte…
(golang学习)3. go线程、协程理解
1.进程、线程、协程区别 a.各自特点 参考《详细介绍 进程、线程和协程的区别》 进程:拥有自己独立的堆和栈,既不共享堆,也不共享栈,进程由操作系统调度; 线程:拥有自己独立的栈和共享的堆,共享堆,不共享栈,标准线程由操…