Go语言GOPATH详解(Go语言工作目录)
GOPATH 是 Go语言中使用的一个环境变量,它使用绝对路径提供项目的工作目录。
工作目录是一个工程开发的相对参考目录,好比当你要在公司编写一套服务器代码,你的工位所包含的桌面、计算机及椅子就是你的工作区。工作区的概念与工作目录的概念也是类似的。如果不使用工作目录的概念,在多人开发时,每个人有一套自己的目录 ...
go mod 生成 vendor
go mod可以使项目从GOPATH的强制依赖中独立出来,也就是说你的项目依赖不再需要放在在GOPATH下面了,每个工程的依赖包、版本可由当前工程独立管理!
GO111MODULE
GO111MODULE有三个值:off, on和auto(默认值)。
GO111MODULE=off,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vend ...
go实现tcp 服务器
我们将使用 TCP 协议和协程范式编写一个简单的客户端-服务器应用,一个(web)服务器应用需要响应众多客户端的并发请求:Go 会为每一个客户端产生一个协程用来处理请求。我们需要使用 net 包中网络通信的功能。它包含了处理 TCP/IP 以及 UDP 协议、域名解析等方法。
服务器端代码是一个单独的文件:
代码 server.go
packag ...
go处理XML
XML 数据格式
对于如下的XML:
<erson>
<FirstName>Laura</FirstName>
<LastName>Lynn</LastName>
</Person>
和 JSON 的方式一样,XML 数据可以序列化为结构,或者从结构反序列化为 XML 数据;
encoding/xml 包实现了一个简单的 XML 解析器(SAX),用来解析 XML 数据内容。下面的例子说明如何使用解析器:
示例& ...
【Go】Go语言的%d,%p,%v等占位符的使用
golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf。
# 定义示例类型和变量
type Human struct {
Name string
}
var people = Human{Name:"zhangsan"}
普通占位符
占位符 说明 举例 输出
%v 相应值的默认格式。 Printf("%v", peopl ...
intelliJ idea安装go开发环境 并 搭建go项目 打包
本人使用的是 idea 开发go项目 也是一个初学者 将自己遇到的问题记录分享
在晚上查找了很多资料 没有什么可以直接使用 本人再次整理一下
我使用的idea 时 2017.2.6 版本的 查看idea版本 Help -> About 之后在弹框中可以看到
使用的go版本&nbs ...
Go中http超时问题的排查
背景
排查
推测
连接超时
疑问
http2
解决超时
并发连接数
服务端限制
真相
重试
解决办法
问题1
背景
最新有同事反馈,服务间有调用超时的现象,在业务高峰期发生的概率和次数比较高。从日志中调用关系来看,有2个调用链经常发生超时问题。
问题1: A服务使用 http1.1 发送请求到 B 服务超时。
问题2: A服务使 ...
go继承
go中没有继承,只能通过组合来实现继承。
继承和组合区别
继承就是子类继承了父类的特征和行为,使得子类实例具有父类的行为和方法,属于is-a的范畴。
组合就是通过对现有对象的拼装从而获得实现更为复杂的行为的方法。
一个struct嵌套了另外一个匿名的struct从而实现了继承,嵌套多个匿名struct实现多重继承。
一个struct ...
[系列] go-gin-api 路由中间件 - 签名验证(七)
目录概览MD5 组合生成签名验证签名中间件 - 代码实现AES 对称加密生成签名验证签名中间件 - 代码实现RSA 非对称加密创建签名验证签名中间件 - 代码实现如何调用?性能测试MD5AESRSAPHP 与 Go 加密方法如何互通?源码地址go-gin-api 系列文章
概览
首先同步下项目概况:
上篇文章分享了,路由中间件 - Jaeger 链路追踪(实 ...
Go pprof性能调优
Go性能调优
在计算机性能调试领域里,profiling 是指对应用程序的画像,画像就是应用程序使用 CPU 和内存的情况。 Go语言是一个对性能特别看重的语言,因此语言中自带了 profiling 的库,这篇文章就要讲解怎么在 golang 中做 profiling。
Go性能优化
Go语言项目中的性能优化主要有以下几个方面:
CPU profile:报告程序的 ...
Go之gob包的使用
gob包("encoding/gob")管理gob流——在encoder(编码器,也就是发送器)和decoder(解码器,也就是接受器)之间交换的字节流数据(gob 就是 go binary的缩写)。一般用于传递远端程序调用(RPC)的参数和结果。
要使用gob,通过调用NewEncoder()方法先创建一个编码器,并向其提供一系列数据;然后在接收端,通过调用NewDe ...
GO的执行原理以及GO命令
Go的执行原理以及Go的命令
一、Go的源码文件
Go 的源码文件分类:
如上图,分为三类:
1、命令源码文件:
声明自己属于 main 代码包、包含无参数声明和结果声明的 main 函数。
命令源码文件被安装以后,GOPATH 如果只有一个工作区,那么相应的可执行文件会被存放当前工作区的 bin 文件夹下;如果有多个工作区,就会安装到 ...
[golang]Go常见问题:# command-line-arguments: ***: undefined: ***
今天遇见一个很蛋疼的问题,不知道是不是我配置的问题,IDE直接run就报错。
问题描述
在开发代码过程中,经常会因为逻辑处理而对代码进行分类,放进不同的文件里面;像这样,同一个包下的两个文件,点击idea的运行按钮或者运行 go run main.go命令时,就会报错,如图所示。
那就好吧,我直接命令运行咯 ...
go ---MQTT client
Paho GO Client
语言
GO
协议
EPL AND EDL
官网地址
http://www.eclipse.org/paho/
API类型
Asynchronous
描述
Paho GO 库包含一个可以作为独立读写MQTT的包。
PAho Go 库目前是0.9版本,即将释放1.0的稳定版本,由于被商业和开源项目采用(例如Gobot ),该项目被积 ...
Go语言系列教程
一 Go介绍与开发环境搭建
01-Go语言简介
02-开发环境搭建
03-Go语言集成开发环境之GoLand安装使用
04-Go语言集成开发环境之VS Code安装使用
05-Go包管理详解
二 Go语言基础
01-Hello World → ...
聊一聊 Go 语言的反射
楔子
本次来聊一聊反射,那什么是反射呢?用大白话解释就是,程序在运行期间可以动态地查看某个变量值的类型,并且还能够动态调用、修改自身的行为。Python 应该是反射机制最为彪悍的语言了,当然查看自身类型更是不在话下,这一点动态语言显然占据绝对的优势。而 Go 虽然作为静态语言,但也是支持反射的,主要通过 reflect ...
Go语言(golang)新发布的1.13中的Error Wrapping深度分析
Go 1.13发布的功能还有一个值得深入研究的,就是对Error的增强,也是今天我们要分析的 Error Wrapping.
背景
做Go语言开发的,肯定经常用error,但是我们也知道error非常弱,只能自带一串文本其他什么都做不了,比如给已经存在的error增加一些附加文本,增加堆栈信息等都做不了。如果我们想给error增加一些附加文本 ...
Go微服务全链路跟踪详解
在微服务架构中,调用链是漫长而复杂的,要了解其中的每个环节及其性能,你需要全链路跟踪。 它的原理很简单,你可以在每个请求开始时生成一个唯一的ID,并将其传递到整个调用链。 该ID称为CorrelationID¹,你可以用它来跟踪整个请求并获得各个调用环节的性能指标。简单来说有两个问题需要解决。第一,如何在应用程序内部 ...
深入理解Go语言(01): interface源码分析
分析接口的赋值,反射,断言的实现原理
版本:golang v1.12
interface底层使用2个struct表示的:eface和iface
一:接口类型分为2个
1. 空接口
//比如
var i interface{}
2. 带方法的接口
//比如
type studenter interface {
GetName() string
GetAge() int
}
二:eface 空接口定义
空接口通过eface结 ...
Go Modules使用教程
Go Modules 不完全教程
文章转载自公众号 Golang 成神之路 , 作者 L
Go Modules 是 Golang 官方最近几个版本推出的原生的包管理方式,在此之前,社区也不乏多种包管理方案。在讨论 Go Modules 之前,我们先回顾一下 Golang 的包管理历史的发展。然后讨论一下 Go Modules 的使用以及一些特性,篇幅有限 ...