Go 日常开发常备第三方库和工具
不知不觉写 Go 已经快一年了,上线了大大小小好几个项目;心态也经历了几轮变化。
因为我个人大概前五年时间写的是 Java ,中途写过一年多的 Python,所以刚接触到 Go 时的感觉如下图:
既没有 Java 的生态,也没有 Python 这么多语法糖。
写到现在的感觉就是:
这里就不讨论这几门语言谁强谁弱了;重点和大家分享下我 ...
Go第三方库-重试(retry-go)
重试机制的简单库。
概要
http请求重试示例:
url := "http://example.com"
var body []byte
err := retry.Do(
func() error {
resp, err := http.Get(url)
if err != nil {
return err
}
defer resp.Body.Close()
body, err = ioutil.ReadAll(resp.Body)
if err != nil {
return err
}
return ni ...
解决go gin框架 bindingrequired`无法接收零值的问题
解决go gin框架 binding:"required"`无法接收零值的问题
1、现象:
在go中gin框架中,需要接收前端参数时,参数必填,我们一般添加binding:"required"`标签,这样前端参数不给时,gin框架会自动校验,给出error。
gin的参数校验是基于validator的,如果给了required标签,则不能传入零值,比如字符串的不能传入空串, ...
go-zero 实战之 blog 系统
go-zero 实战项目:blog
本文以 blog 的网站后台为例,着重介绍一下如何使用 go-zero 开发 blog 的用户模块。
本文涉及的所有资料都已上传 github 仓库 kougazhang/go-zero-demo,感兴趣的同学可以自行下载。
用户模块是后台管理系统常见的模块,它的功能大家也非常熟悉。管理用户涉及到前端操作,用户信息持久化又离不开数 ...
Vscode配置Go开发调试环境
Vscode配置Go开发调试环境
Go安装
Go官网下载Go,然后按照流程安装,记录下安装的路径,后面需要更改环境变量配置GOROOT,例如我这里安装的路径是:
Windows
D:\Develop\Go
Linux(基于ArchLinux):
/usr/lib/go
安装完成后使用命令查看是否安装完成,显示安装go版本号:
go version
安装完成之后建立一个Go项目的存储 ...
简单的 Go 入门教程
Go(又称 Golang )是 Google 开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言
Docker 和 Kubernetes 都是使用 Go 进行开发的,这几年 Go 越来越流行,生态也越来越好了
初学 Go 的时候会遇到了一些小问题,在一些教程中没有提及或者因为时效性的缘故,经常需要查阅很多资料才能弄懂,所以想写一篇比 ...
Go WebSocket 实现
WebSocket是HTML5下的产物,能更好的节省服务器资源和带宽。常见场景:html5多人游戏、聊天室、协同编辑、基于实时位置的应用、股票实时报价、弹幕、视频会议、QQ,微信、等等... ...
websocket VS http
相似:
都是应用层协议,都基于tcp传输协议
跟http有良好的兼容性,ws和http的默认端口都是80,wss和https的默认端口都 ...
Go:我有注解,Java:不,你没有!
https://mp.weixin.qq.com/s/hrsagmDtjt6r9fJKf8SUcQ
特殊在于,Go 有些特性是其他语言有,他没有的。最经典的就是 N 位 Java 同学寻找 Go 语言的注解在哪里,总要解释。
为此,今天煎鱼就带大家了解一下 Go 语言的注解的使用和情况。
什么是注解
了解历史
注解(Annotation)最早出现自何处,翻了一圈并没有找到。但可以明 ...
Go语言核心36讲(Go语言基础知识二)--学习笔记
02 | 命令源码文件
我们已经知道,环境变量 GOPATH 指向的是一个或多个工作区,每个工作区中都会有以代码包为基本组织形式的源码文件。
这里的源码文件又分为三种,即:命令源码文件、库源码文件和测试源码文件,它们都有着不同的用途和编写规则。
对于 Go 语言学习者来说,你在学习阶段中,也一定会经常编写可以直接运行 ...
Go基础
Go基础
第一篇 Go介绍与开发环境搭建
[01] Go语言介绍
[02] Go安装
[03] Go语言集成开发环境之GoLand安装使用
[04] Go语言集成开发环境之VS Code安装使用
[05] Go 语言多版本安装及管理利器 - GVM
第二篇 Go包管理
[01] Go项目结构
[02] Go包管理
[03] Go语言之依赖管理
[04] 使用go module导入本地 ...
Go语言核心36讲(导读)--学习笔记
目录
开篇词 | 跟着学,你也能成为Go语言高手
导读 | 写给0基础入门的Go语言学习者
导读 | 学习专栏的正确姿势
开篇词 | 跟着学,你也能成为Go语言高手
Go 语言是由 Google 出品的一门通用型计算机编程语言。
Go 程序可以在装有 Windows、Linux、FreeBSD 等操作系统的服务器上运行,并用于提供基础软件支撑、API 服务、We ...
Go语言之Goroutine与信道、异常处理
一、Goroutine
Go 协程可以看做成一个轻量级的线程,Go 协程相比于线程的优势:
Goroutine 的成本更低大小只有 2 kb 左右,线程有几个兆。
Goroutine 会复用线程,比如说:我有 100 个协程,但是都是共用的的 3 个线程。
Goroutine 之间通信是通过 channel 通信的。(Go 推崇的是信道通信,而不推崇用共享变量通信)
1、启 ...
centOS 下安装go环境
两种方法,yum 安装和 tar.gz包安装。
yum 安装
yum install golang
不方便管理
tar.gz 包安装
1.下载安装包
wget https://golang.org/dl/go1.17.1.linux-amd64.tar.gz
# 上面可能需要FQ,使用下面备用的
wget https://golang.google.cn/dl/go1.17.1.linux-amd64.tar.gz
2.将下载的包解压到 /usr/local目录下
tar -zxf go ...
【Go】Golang实现gRPC的Proxy的原理
背景
gRPC是Google开始的一个RPC服务框架, 是英文全名为Google Remote Procedure Call的简称。
广泛的应用在有RPC场景的业务系统中,一些架构中将gRPC请求都经过一个gRPC服务代理节点或网关,进行服务的权限限制,限流,服务调用监控,增加请求统计等等诸多功能。
如下以Golang和gRPC为例,简要分析gRPC的转发原理。
  ...
腾讯standards-go
Golang 代码规范
目录Golang 代码规范1. 前言2. 代码风格2.1 【必须】格式化2.2 【推荐】换行2.3 【必须】括号和空格2.4 【必须】import 规范2.5 【必须】错误处理2.5.1 【必须】error 处理2.5.2 【必须】panic 处理2.5.3 【必须】recover 处理2.6 【必须】单元测试2.7 【必须】类型断言失败处理3. 注释3.1 【必须】包注释3 ...
go开发遇到的问题
1. go mod tidy : dial tcp xx:443: i/o timeout,
因为go 1.17 默认的GOPROXY=https://proxy.golang.org,direct ,在墙内无法访问。
所以在.zshrc /.bashrc 加上环境变量
export GOPROXY=https://goproxy.io
export GO111MODULE=on
2. go1.17. GoLand 2021.2.3. 因为有些旧的依赖包,不希望启用go module. ...
go语言游戏服务端开发(一)——架构
五邑隐侠,本名关健昌,12年游戏生涯。 本教程以Go语言为例。
网络游戏程序分为客户端和服务端。客户端负责图形渲染、交互和一些简单校验处理,服务端负责业务逻辑处理、数据存储。
我们开发一个游戏demo,服务端程序可以是一个单线程的服务进程。它包含网络通信、业务逻辑处理、数据存储。服务端打开网络端口监听, ...
Go并发编程--正确使用goroutine
目录1. 对创建的gorouting负责1.1 不要创建一个你不知道何时退出的 goroutine1.2 不要帮别人做选择1.3 不要作为一个旁观者1.4 不要创建不知道什么时候退出的 goroutine1.5 不要创建都无法退出的 goroutine1.6 确保创建出的goroutine工作已经完成2. 总结3. 参考
1. 对创建的gorouting负责
1.1 不要创建一个你不知道何时退出 ...
Go优秀开源项目推荐
前言
本文主要是收集Go语言开发的一些优秀项目和框架,个人见识有限肯定还有很多优秀的Go项目没有收录的,假如大家有好的Go项目可以在文末留言(排名不分先后)。
Go优秀项目收集仓库
GolangFamilygithub.com/GolangFamily
awesome-go
精选的 Go 框架、库和软件的精选列表。
https://github.com/avelino/awesome- ...
Windows Go 开发环境下载、安装并配置
前言
对于我们Windows用户而言,Go提供两种环境安装方式(源码安装除外):
1、MSI安装(MSI文件是Windows Installer的数据包,它实际上是一个数据库,包含安装一种产品所需要的信息和在很多安装情形下安装(和卸载)程序所需的指令和数据。):程序在安装过程中会自动配置Go所需要的环境变量。
2、ZIP安装:需要你 ...