Go编译工具命令
Go编译工具
go build <编译文件>
附加参数
备 注
-v
编译时显示包名
-p n
开启并发编译,默认情况下该值为 CPU 逻辑核数
-a
强制重新构建
-n
打印编译时会用到的所有命令,但不真正执行
-x
打印编译时会用到的所有命令
-race
开启竞态检测
# 无参数模式
$ go build
# build 多文件
$ go build f1.go ...
浅谈GoPath和Go Modules包管理
目录1、概述2、GOPATH介绍2.1 GOPATH目录2.2 GOPATH的缺点3、GO Module介绍3.1 设定GO111MODULE环境变量3.2 初始化mod3.3 go mod命令4、总结
1、概述
大多数语言都有“依赖”、“包”等概念,Go语言的依赖处理经历了几次变革
最早的时候,Go所依赖的所有的第三方库都放在GOPATH这个目录下面
从v1.5开始开始引入vendor模式 ...
记go中一次http超时引发的事故
记一次http超时引发的事故
前言
分析下具体的代码实现
服务设置超时
客户端设置超时
http.client
context
http.Transport
问题
总结
参考
记一次http超时引发的事故
前言
我们使用的是golang标准库的http client,对于一些http请求,我们在处理的时候,会考虑加上超时时间,防止http请求一直在请求,导致业务长时 ...
Go以及调试工具dlv安装及使用
Go以及调试工具dlv安装及使用
安装go
wget https://studygolang.com/dl/golang/go1.14.1.linux-amd64.tar.gz
tar -C /usr/local -zxvf go1.14.1.linux-amd64.tar.gz
mkdir -p /home/go/bin/home/go/pkg /home/go/src #官方建议工作目录为/home/go
vi .bash_profile
#在最下面添加
export GOROOT=/usr/local/go
export G ...
升级 Go 版本
有些人可能注意到,每次 Go 发布新版本,官方都会提供类似这样的升级截图:
这可以说是官方的 Go 多版本管理,也是升级 Go 的方式。今天就一起聊一聊这种多版本管理方式及其实现原理。(我之前介绍过一个第三方多版本管理工具 goup,是我比较推荐的)。
注意,Windows 用户应该使用 WSL2。
01 ...
Go语言syncMap LoadOrStore
Go 语言 中 sync.Map 的 LoadOrStore 函数 表示,如果我们获取的 key 存在,那么就返回 key 对应的元素,如果获取的 key 不存在,那么就返回我们设置的值,并且将我们设置的值,存入 map。
sync.Map LoadOrStore函数
语法
func (m *Map) LoadOrStore(key, value interface{}) (actual interface{}, loaded bool)
参数
...
go-zero服务注册和发现
go-zero 服务注册和发现
在没有服务注册和发现的时候, 没新上一个服务, 或者没部署一个新的节点, 都要改所有调用方的配置文件, 简直就是配置噩梦, 还容易配置错误
分析一个go-zero的服务注册和发现,
接着上面的代码, go-zero实战, 看看rpc客户端怎么寻址到rpc服务端的
//logic调用的代码
regRsp, err := l.svcCtx.UserServi ...
Go 语言中 GoPath 模式与 GoModules 模式介绍
GoPath 模式
当你在电脑上安装好 Go 后,在终端执行 go env 命令,在输出的内容中,你会发现一个 GOPATH 的环境变量,它的值是一个目录路径。
从 Go 1.8 版本开始,安装 Go 开发包时会默认为 GOPATH 变量设置一个目录路径,它表示的是 Go 语言的工作目录,这个目录下会有三个子目录,它们分别是:
bin:存放编译后生成的 ...
Go: 方法
方法
在面向对象编程的编程思想里,类、对象、方法是基础。类比到Golang中
// 类
type Point struct {X, Y int}
// 对象
p := Point{1, 2}
// 方法 即绑定在struct上的函数
// ...
方法声明
方法和函数类似,区别在于它在函数名前多了一个参数(接收器),用来将方法绑定在参数对应的类型上
package main
import (
"fmt" ...
什么是Windows To Go?
https://en.wikipedia.org/wiki/Windows_To_Go
微软为了解决企业用户的需求而推出,可以在u盘或者移动硬盘启动window系统,顾名思义,移动的windows。
那这个东西有啥用呢?
1.移动办公
比如程序员,有时候公司pc开发,有时候家里pc开发,有了win to go,不需要再部署两套系统、两套开发环境,即插即用。
提供除了笔 ...
go mod replace
Introduction to Go Modules – Roberto Selbach https://roberto.selbach.dev/intro-to-go-modules/
go mod使用 - 简书 https://www.jianshu.com/p/760c97ff644c
一个包管理工具应该有以下功能:基本功能
依赖管理
依赖包版本控制
对应的包管理平台
可以私有化部署
加分:
代码包是否可以复用
构建,测试 ...
Go: 函数
函数
函数声明
函数由5部分组成:函数名、形参列表、返回列表、和函数体。func为定义函数的关键字
func name(parameters-list) (result-list) {
body
}
形参列表的格式是参数名称+参数类型,相同类型的参数可以写在一起
// 这两种个写法等价的
func f(x, y float64) float64 {}
func f(x float64, y float64) float64 ...
rocketmq事务 go 采用rocketmq-client-go的实现
我想用rocketMq大家主要是用它的事务,所以拿着官方的代码体验一下
环境
用docker安装rocketMq
#需要创建文件夹
/docker/namesrv/logs
/docker/namesrv/store
/docker/rocketmq/logs
/docker/rocketmq/store
#需要创建文件
/docker/rocketmq/broker.conf
文件内容如下:
brokerClusterName = DefaultCluster
brokerName = ...
go 定时任务库 cron
简介
在Linux中,Cron是计划任务管理系统,通过crontab命令使任务在约定的时间执行已经计划好的工作,例如定时备份系统数据、周期性清理缓存、定时重启服务等。
本文介绍的cron库是一个用于管理定时任务的库,就是用Go实现Linux中crontab命令的相似效果。
快速使用
文本代码使用 Go Modules。
创建目录并初始化:
$ mkdir c ...
go中semaphore(信号量)源码解读
运行时信号量机制 semaphore
前言
作用是什么
几个主要的方法
如何实现
sudog 缓存
acquireSudog
releaseSudog
semaphore
poll_runtime_Semacquire/sync_runtime_SemacquireMutex
sync_runtime_Semrelease
参考
运行时信号量机制 semaphore
前言
最近在看源码,发现好多地方用到了这个semaphore。
本文是在go v ...
go中x/sync/semaphore解读
semaphore
semaphore的作用
如何使用
分析下原理
Acquire
TryAcquire
Release
总结
参考
semaphore
semaphore的作用
信号量是在并发编程中比较常见的一种同步机制,它会保证持有的计数器在0到初始化的权重之间,每次获取资源时都会将信号量中的计数器减去对应的数值,在释放时重新加回来,当遇到计数器大于信号量 ...
go nacos服务发现
本来想研究一下nacos的服务发现,原来sample这么详细啊,直接运行代码吧:
package main
import (
"fmt"
"time"
"github.com/nacos-group/nacos-sdk-go/clients"
"github.com/nacos-group/nacos-sdk-go/clients/naming_client"
"github.com/nacos-group/nacos-sdk-go/common/constant"
"githu ...
Jaeger Client Go 链路追踪|入门详解
目录从何说起Jaeger部署 Jaeger从示例了解 Jaeger Client Go了解 trace、spantracer 配置Sampler 配置Reporter 配置分布式系统与span怎么调、怎么传HTTP,跨进程追踪客户端Web 服务端Tag 、 Log 和 Ref
从何说起
之前参加柠檬大佬的训练营(免费白嫖),在大佬的指导下我们技术蒸蒸日上,然后作业我们需要实现一个 Jaeger 后 ...
go 单元测试 gomonkey
目录1.安装2.使用方法2.1 mock一个函数2.2 mock 一个方法2.3 mock 一个全局变量2.4 mock 一个函数序列3.参考
单元测试中,经常需要mock。
例如,一个函数中,需要调用网络连接函数建立连接。做单元测试时,这个建立连接的函数就可以mock一下,而不真正去尝试建立连接。
mock 有时也称为“打桩”。
例如,mock一个函数,可以 ...
当红开发语言Go,真的是未来的技术主流吗?
摘要:文将详细介绍 Golang 的语言特点以及它的优缺点和适用场景,带着上述几个疑问,为读者分析 Go 语言的各个方面,以帮助初入 IT 行业的程序员以及对 Go 感兴趣的开发者进一步了解这个热门语言。
本文分享自华为云社区《大红大紫的 Golang 真的是后端开发中的万能药吗?》,原文作者:Marvin Zhang 。
前言
城外的人想进 ...