go
文章平均质量分 51
跟派大星学编程
从HelloWorld到改变世界
展开
-
thrift安装与使用
1. thrift 安装下载地址:https://dlcdn.apache.org/thrift/0.16.0/下载之后加入到环境变量中,检测是否可用thrift --version2. thrift基础语法2.1 支持的基础类型byte: 有符号字节i16: 16位有符号整数i32: 32位有符号整数i64: 64位有符号整数double: 64位浮点数string: 字符串2.2 支持的容器类型list: 一系列由T类型的数据组成的有序列表,元素可以重复;set:原创 2022-04-25 11:26:10 · 1042 阅读 · 1 评论 -
Go降龙十八式
1. 项目私有包当项目多时一些项目定义的常量和函数如果不想被别的项目引用到,那么你可以在项目目录下建一个 internal 的文件夹,然后将不想被别人引用的都放到该文件夹下,在Go语言中 internal 下面的东西只能本项目使用,无法被其他项目引用2. 私有接口如果你定义了一个接口,不想被其他包误实现的话,你可以给该接口定义一个私有函数。type Coder interface { i() // 定义一个私有函数,防止其他包误实现 Code()}3. 多系统如果某个功能,在window原创 2021-05-06 11:41:36 · 260 阅读 · 1 评论 -
goland debug高级技巧
1. 自定义表达式我们在debug期间想动态修改某个值,或查看某个函数返回的信息可以采用该方式点击这个,或按快捷键 option + fn + F8 则会弹出下面弹窗,在该处可自定义一些表达式进行执行。2. 断点条件当满足某个条件时,才会触发断点双指点击该处的断点即可弹出这个设置条件的框,此处我们设置 k == 2 时才断下来3. 智能步入如果你一行中有多个函数,如果你想进入某个函数,可以在该断行处按下快捷键 shift + fn + F7此处光标会在第一个函数上,通过左原创 2020-09-24 10:14:44 · 3375 阅读 · 3 评论 -
Go打包静态资源文件
采用go-bindata来打包资源文件为go源码文件GitHub地址:https://github.com/go-bindata/go-bindata1. 安装go get -u github.com/go-bindata/go-bindata/......是指编译安装go-bindata目录下的所有的main函数2. 简单实用# 打包config目录下所有文件go-bindata config/# 打包config.yaml 文件go-bindata config.yaml命.原创 2020-08-25 17:23:25 · 1154 阅读 · 0 评论 -
go中json使用小技巧总结
有的时候上游传过来的字段是string类型的,但是我们却想用变成数字来使用。 本来用一个json:",string" 就可以支持了,如果不知道golang的这些小技巧,就要大费周章了。参考文章:http://attilaolah.eu/2014/09/10/json-and-struct-composition-in-go/1. 临时忽略struct空字段type User struct { Email string `json:"email"` Password string转载 2020-07-21 21:32:27 · 508 阅读 · 0 评论 -
Go mod兼容性问题
模块在 Go 中确定了一个重要的原则,即 导入兼容性规则如果旧包和新包的导入路径相同,新包必须向后兼容旧的包所以一旦你依赖了某个包的两个版本,那么较低版本的将会被忽略。举个例子:项目 A 和 B 都 依赖 项目 C但项目A依赖的是项目的V2版本,项目B依赖的是项目C的V1版本一旦项目A去引用项目B,那么项目B的V1版本将会被忽略所以针对这个情况,我们依赖的项目如果做升级,一定要做兼容性升级,也就是你不能把项目C的V1版本里面的东西删掉如果说真的想删或者大改动怎么办?,你可以修改 go原创 2020-07-13 10:02:27 · 1924 阅读 · 0 评论 -
Go语言中Context使用技巧
Go的Context是一个设计非常精巧的接口,我们可以使用它非常方便进行上下文的值传递,同时也控制goroutine的生命周期。1. 常用功能1.1 值传递Context提供了一个WithValue 函数,可将一对 key/value 的值存放到Context中func TestContextWithValue(t *testing.T) { ctx := context.WithValue(context.Background(), "name", "派大星") fmt.Println.原创 2020-05-28 14:43:12 · 3416 阅读 · 0 评论 -
windows安装gcc
下载 mingw下载地址:https://sourceforge.net/projects/mingw-w64/files/安装安装的时候记得选择 64位的,安装好之后将 mingw64 下的 bin 文件夹路径添加到PATH即可...原创 2020-01-17 16:45:04 · 220 阅读 · 0 评论 -
Go编译proto文件
1. 安装Go1.1 下载Gowget https://studygolang.com/dl/golang/go1.13.4.linux-amd64.tar.gz# 解压tar -zxvf go1.13.4.linux-amd64.tar.gz1.2 配置go环境编辑 /etc/profile 文件vim ~/.bashrc将下面内容加入到末尾(GOPAT是我Windows中的...原创 2020-01-14 09:29:58 · 6609 阅读 · 0 评论 -
用Go写一个内网穿透工具
系统架构系统分为两个部分,client 和 server,client运行在内网服务器中,server运行在公网服务器中,当我们想访问内网中的服务,我们通过公网服务器做一个中继。下面是展示我灵魂画手的时刻了user发送请求给 server,server和client建立连接,将请求发给client,client再将请求发给本地程序处理(内网中),然后本地程序将处理结果返回给clien...原创 2019-12-10 19:22:04 · 3985 阅读 · 3 评论 -
golang使用etcd
etcdetcd 是一个分布式开源的kv数据库,它可以监听某个键的变化,可作为分布式锁1. 下载安装etcd官网: https://github.com/etcd-io/etcd/releases选择对应的系统下载,解压即可,下面以 Linux系统做演示wget https://github.com/etcd-io/etcd/releases/download/v3.3.18/etc...原创 2019-12-07 20:44:27 · 967 阅读 · 0 评论 -
Go编译时加入版本信息
-ldflags 参数Go 编译时可通过 ldflags 动态的为程序里某个变量赋值,我们可以利用这个特性来达到将Go的信息和git 的commit 信息编译到我们的二进制文件中。package mainimport ( "fmt" "os")var ( gitHash string buildTime string goVersion string)func...原创 2019-11-17 16:15:43 · 2817 阅读 · 0 评论 -
Go语言版实现QQ扫码登陆
点击查看 官方文档1. 申请appid和appkeyappid:应用的唯一标识。在OAuth2.0认证过程中,appid的值即为oauth_consumer_key的值。appkey:appid对应的密钥,访问用户资源时用来验证应用的合法性。在OAuth2.0认证过程中,appkey的值即为oauth_consumer_secret的值。申请地址https://connect.qq....原创 2019-11-16 16:46:54 · 2391 阅读 · 0 评论 -
Go性能分析
文章目录1. 准备工作1.1 下载go-wrk1.2 安装生成火焰图工具1.2.1 下载go-torch1.2.2 安装perl1.2.3 下载FlameGraph1.3 下载graphviz1.3.1 Windows1.3.2 Linux1.3.3 测试2. 性能分析2.1 开启性能分析2.2 开始压测2.3 web查看2.4 采样分析2.5 生成火焰图附录1. 准备工作1.1 下载go-w...原创 2019-11-04 17:59:04 · 1109 阅读 · 0 评论 -
Go语言入门(2)Go语言基础
1. 基础数据类型数字类型: 整型 int 和浮点型 float32、float64,Go 语言支持整型和浮点型数字,并且原生支持复数布尔型: true、false派生类型: (a) 指针类型(Pointer) (b) 数组类型 (c) 结构化类型(struct) (d) Channel 类型 (e) 函数类型 (f) 切片类型 (g) 接口类型(interface) ...原创 2018-08-04 21:27:47 · 318 阅读 · 0 评论 -
Go语言入门(3)beego的安装与使用
1. 安装库可参考 :https://beego.me/quickstartgo get -u github.com/astaxie/beego再安装beego get -u github.com/beego/bee2. 配置bee的环境变量在环境变量 path 中新加入 一个 %GOPATH%/bin3. 测试在cmd 命令窗口中输入 : bee 即可...原创 2018-08-04 21:37:26 · 793 阅读 · 0 评论 -
Go语言入门(4)dep包管理
1. 什么是dep? dep和go,在一定程度上相当于maven之于Java,composer之于PHP,dep是go语言官方的一个包管理工具。 相比较go get而言,dep可以直接给引入的第三方包一个专门的目录,并且可以专门制定一个配置文件,控制go项目所引入的包,版本以及其他依赖关系。dep这个项目放在golang官方的github中:https://github.com...原创 2018-08-19 16:15:16 · 711 阅读 · 0 评论 -
Go语言入门(6)闭包
转载自:https://blog.csdn.net/zhangzhebjut/article/details/25181151一 函数式编程概论在过去近十年时间里,面向对象编程大行其道,以至于在大学的教育里,老师也只会教给我们两种编程模型,面向过程和面向对象。孰不知,在面向对象思想产生之前,函数式编程已经有了数十年的历史。就让我们回顾这个古老又现代的编程模型,看看究竟是什么魔力将这个概念在21...转载 2018-10-31 20:45:31 · 219 阅读 · 0 评论 -
Go语言入门(5)安装第三方库
通过go get 去获取github上的第三方库是没什么问题的,但是要获取google的就不行了,没办法,所以我们通过gopm这个工具来获取Google的第三方库1. 安装gopmgo get github.com/gpmgo/gopm2. 通过gopm安装我们安装一个go 的 import 工具gopm get -g -v golang.org/x/tools/cmd/goimpo...原创 2018-10-27 15:41:41 · 4120 阅读 · 0 评论 -
go语言实现服务器与微信公众平台对接
微信对接文档:点击查看在这不得不吐槽一下,写的什么玩意文档,给的例子真他么垃圾,文档说是返回echostr,例子给返回个true,false要不要这么误导人。type GetSignature struct { Signature string `json:"signature"` //微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonc...原创 2018-12-30 21:21:08 · 1285 阅读 · 0 评论 -
go语言发送微信小程序模板消息
PS:开发微信的东西是真的心累,一大堆坑!文档写的乱七八糟的,找个东西都得半天。为了发一条模板消息翻了无数个博客,很多都是把代码一放,其实代码这块很好弄,不就组装个数据调一下API吗,主要是前期工作。我把我遇到的坑给大家总结一下,希望后来人可以少走一些弯路。微信发送模板消息文档:点击查看超级大坑!发送接口问题文档上是这个接口:https://api.weixin.qq.com/cgi...原创 2018-12-31 16:33:28 · 3768 阅读 · 0 评论 -
Windows下交叉编译Go
1. Windows下编译为LinuxSET CGO_ENABLED=0SET GOOS=linuxSET GOARCH=amd64go build main.go原创 2019-01-08 15:51:23 · 4581 阅读 · 0 评论 -
QQ每天定时领取群礼物
本文采用Go语言进行编写,主要原因是简单粗暴,几行代码就搞定了,后面部署也非常方便目录结构1. 代码编写package mainimport ( "encoding/json" "fmt" "github.com/robfig/cron" "io/ioutil" "net/http" "原创 2019-02-18 18:23:53 · 945 阅读 · 0 评论 -
Go代码风格检查脚本
Go代码风格检查脚本check.sh#!/bin/bashcd "${GOPATH}/src/github.com/pibigstar/go-demo"gocyclo -over 25 $(ls -d */ | grep -v vendor | grep -v proto)find . -type f -not -path "./vendor/*" | xargs -0 missp...原创 2019-04-05 17:43:29 · 526 阅读 · 0 评论 -
windows配置go-micro开发环境
1. 安装protobuf下载protoc.exe点击下载下载protoc-3.8.0-rc-1-win64.zip下载解压后,将路径配置到环境变量里。安装插件以go get 方式安装安装protoc-gen-gogo get -v github.com/golang/protobuf/protogo get -v github.com/golang/protobuf/proto...原创 2019-05-25 15:15:34 · 2700 阅读 · 0 评论 -
protobuf文件详解
通信方式一个请求对象对应一个返回对象rpc Login(LoginRequest) returns (LoginResponse) {}一个请求对象,服务器返回多个结果rpc Login(LoginRequest) returns (stream LoginResponse) {}3.多个请求对象,一个返回结果rpc Login(stream LoginRequest) r...原创 2019-05-29 12:16:38 · 3285 阅读 · 1 评论 -
go mod 常用操作
前期设置将下面两个设置添加到系统的环境变量中GO111MODULE=onGOPROXY=https://goproxy.iogoLand开启 go mod基本操作初始化一个moudlego mod init下载modules到本地cachego mod download编辑go.mod文件选项有-json、-require和-exclude,可以使用帮助go...原创 2019-06-11 08:48:48 · 1895 阅读 · 0 评论 -
GoLand文件格式化配置
Go fmt配置Arguments: -w $FilePath$Proto格式检查1. 下载clang-format在这个网址进行下载:http://releases.llvm.org/download.html文件有点大,一百多M,下载之后安装即可2. 配置clang-formatArguments上面输入:-style="{BasedOnStyle: Google, Ind...原创 2019-07-05 10:17:14 · 6929 阅读 · 1 评论 -
golang对接支付宝支付
本文采用沙箱环境1. 开启沙箱文档:https://docs.open.alipay.com/200/105311/沙箱地址:https://openhome.alipay.com/platform/appDaily.htm2. 生成秘钥本文中的签名方法默认为 RSA2,采用支付宝提供的 RSA签名&验签工具 生成秘钥时,秘钥的格式必须为 PKCS1,秘钥长度推荐 2048。所...原创 2019-07-20 13:59:15 · 5286 阅读 · 4 评论 -
Nsq搭建与使用
1. 下载下载之后解压,并将其bin路径添加到环境变量当中github地址: https://github.com/nsqio/nsq/releases文档: https://nsq.io/overview/quick_start.html2. 使用说明2.1 启动nsqlookupdnsqlookupd它会监听两个端口: http: 4161 客户端用它来发现和管理。 tc...原创 2019-07-27 16:01:33 · 1857 阅读 · 0 评论 -
Go安装配置与使用mqtt
文章目录1. 安装2. 测试2.1 注册一个top进行接收2.2 发布消息到刚注册的top3. 配置Mqtt3.1 添加用户3.2 添加Topic和用户的关系3.3 重启mqtt3.4 测试3.4.1 监听消费3.4.2 发布消息4. Go语言使用Mqtt4.1 测试1. 安装引入mosquitto仓库并更新sudo apt-add-repository ppa:mosquitto-de...原创 2019-10-05 20:11:32 · 3684 阅读 · 1 评论 -
Go语言入门(1)Go语言的安装与配置
1. 下载Go语言GO安装包下载地址: https://studygolang.com/dl2. Windows下安装GO下载好之后,直接安装,下一步。。。。finsh测试是否安装成功:go version3. 配置GOPATH新建环境变量 GOPATH = D:/goWorkGOPATH是你的工作目录,它包括三个目录:bin(存放编译好的可运行文件)、pkg(...原创 2018-08-04 20:57:56 · 686 阅读 · 0 评论