Go语言中文网 为您找到相关结果 284

19年第36周:Go语言 包管理和Go工具

一、Go包管理简介 当你工作目录不在 $GOPATH/src 里面,并且工作目录或者工作目录的任意级父目录中含有 go.mod 文件,go 命令行工具会启用模块机制; Go mod能够,①将当前目录设置为模块。②在代码中导入不存在的包时,go命令行工具会帮你自动安装第三方包。 二、如何更好更方便的使用Go包 创建(增): go mod init 创建了一个新的模块,初始化 go.mod 文件并且生成相应的描述 go get xxx添加一个新的依赖项 go get xxx@v1.3.1显式地指定了 @v1.3.1,表示获取这个版本。没有则等价于@latest go build, go test, go run 和其它构建代码包的命令,会在需要的时候在 go.mod 文件中添加新的依赖项 删除(...阅读全文

博文 2019-10-07 19:32:43 aside section ._1OhGeD

Golang包管理工具Glide,你值得拥有

预览目录 glide.yml文件 版本和范围 基本 连字符- 通配符x,X,* 波浪号~(Patch) 插入符^(Major) “依赖地狱”是每个程序员在成长之路上都会面临的情况,首先我们通过语义化版本来控制软件的版本,然后在我们的项目里通过指定软件版本来达到控制依赖的目的。 如:你的项目A依赖多个项目B1,B2,B3,而B1,B2,B3又依赖着其它项目C1,C2…。一个项目依赖这多个项目,当项目C1修复BUG版本发生变化,如果A依旧使用旧版本,势必引起未知的问题。所以,你需要意识到包依赖管理的重要性。 在Go语言中,我比较推荐大家使用Glide作为包管理器。它能够自动识别Godeps的包管理,十足的很方便。本节介绍glide.yml的语义说明以及版本指定的格式。 glide.yml文件 g...阅读全文

博文 2017-08-27 17:51:36 Deepzz's Blog

[系列] - 使用 go modules 包管理工具(一)

概述 我想实现一个开箱即用的 API 框架的轮子,这个轮子是基于 Gin 基础上开发的。 为什么是开箱即用,它会集成哪些功能? 以上功能点,都是常用的,后期可能还会增加。 废话不多说,咱们开始吧。 创建一个项目,咱们首先要考虑一个依赖包的管理工具。 常见的包管理有,dep、go vendor、glide、go modules 等。 最开始,使用过 dep,当时被朋友 diss 了,推荐我使用 go modules 。 现在来说一下 go modules ,这个是随着 Go 1.11 的发布和我们见面的,这是官方提倡的新的包管理。 说一个环境变量:GO111MODULE,默认值为 auto 。 当项目中有 go.mod 时,使用 go modules 管理,反之使用 旧的 GOPATH 和 v...阅读全文

博文 2019-08-27 11:34:29 訢亮

Gormat - 跨平台Gopher辅助工具

> 跨平台的界面化golang便捷转换器,支持数据库转Struct、Sql转Struct、Json转Struct等。![image](assets/show_win.png)## Features 功能展示- [x] 数据库转Struct - [x] 数据引擎支持 - [x] Mysql - [ ] PostgreSQL - [ ] Sqlite3 - [ ] Mssql - [x] 自动存文件 - [x] 标签支持 - [x] Gorm - [x] Xrom - [x] JSON - [x] 排除列表 - [x] 数据映射 - [x] 自定义转型- [x] Sql转Struct- [x] Json转Struct### Prerequisites 开发条件```golang >= 1.11`...阅读全文

博文 2020-03-08 12:32:45 Bingoladen

golang笔记之接口(二)

接口类型具体描述了一系列方法的集合,一个实现了这些方法的具体类型是这个接口类型的实例。 io.Writer类型是用得最广泛的接口之一,因为它提供了所有类型的写入bytes的抽象,包括文件类型,内存缓冲区,网络链接,HTTP客户端,压缩工具,哈希等等。io包中定义了很多其它有用的接口类型。Reader可以代表任意可以读取bytes的类型,Closer可以是任意可以关闭的值,例如一个文件或是网络链接。(到现在你可能注意到了很多Go语言中单方法接口的命名习惯) package io type Reader interface { Read(p []byte) (n int, err error) } type Closer interface { Close() error } 再往下看,我们发现...阅读全文

博文 2019-05-07 19:34:59 月下独酌100

DockOne技术分享(四):AppC和Docker的对比

【编者的话】 现在一说到“容器”,几乎所有人首先想到的就是Docker。Docker作为目前最主流的容器标准,掩盖了许多前辈和后续者的光辉。事实上,Docker既不是第一个容器类产品(OpenVZ、Lxc等都远远早于它),也不会是最后一个。今天我们来聊一个最近有点火的新容器标准:AppC。 AppC是 CoreOS 公司在2014年12月发起的社区项目,旨在设计一种新式的跨平台容器在镜像格式、运行方式和服务发现机制等方面的标准。 从官方的表态说,这个项目最初诞生的原因是,主流容器工具 Docker 正在从一个单纯的容器工具成为自成一体的生态圈。而 Docker 的中心式管理方式(由每个主机上的 Docker -d 后台进程统一控制)对于 Systemd 以及第三方的任务编排工具并不友好(具体...阅读全文

9 Go盒子:包及包管理

一、Go的包设计理念 1.代码盒子 在Go程序中,包是代码模块组织的单位,为项目代码组织结构,提高代码的可读性、重用性及可维护性。它就是一个代码盒子,把可共同维护的相关功能组织在一起,为外部提供功能实现。理解包可以更好的编写高可维护代码。 2.包结构 2.1 main包与main()函数 main()函数是程序的唯一入口,它放置于main包中。 main()函数无参数无返回值 //声明包名 package main //导入其它包 import "fmt" //程序的入口函数 func main(){ //使用fmt官方标准包,用于打印输出 fmt.Println("Hello World!") } 2.2 init()函数 init()函数基于包级别定义,主要用于: 初始化那些不能被初始化...阅读全文

博文 2019-07-05 21:32:40 GoFuncChan

【golang】快速构建项目,带你坐上小摩托

开局一波图: 所谓万事开头难,要启动一个项目,第一步就是设计好项目结构,大多通用项目结构都有相似型,本出楼主归纳好项目结构,直接带你坐上小摩的。 滴滴滴滴 项目结构 1、入口包 2、预处理包 3、服务包 4、bus 5、应用包 6、通用包 7、日志包 8、工具...阅读全文

博文 2020-04-18 17:32:55 dongzaidong

golang版本工具GVM 和包管理工具go mod原理讲解

一句话简介 GVM(Go Version Manager) 下载多版本golang到本地缓存,通过切换环境变量指向不同的Golang版本 Go mod 对 go modules 的依赖管理,使得不同项目中依赖不同版本的同一个库更简单。 进一步介绍 GVM配置环境变量的原理 gvm配置路径 $ cat /Users/name/.gvm/scripts/gvm export GVM_ROOT=/Users/name/.gvm . $GVM_ROOT/scripts/gvm-default gvm配置后的 golang 环境变量 $go env GO111MODULE="" GOARCH="amd64" GOBIN="" GOCACHE="/Users/name/Library/Caches/go...阅读全文

Go的包管理工具(二):glide

在上一篇文章中介绍了 Go 的环境配置和包管理的几种方式。Go 的包管理是一直是为人诟病之处,从 Go 1.5 引入的 vendor 机制、准官方工具dep,到 Go 1.5 的 go modules,目前为止还没一个简便的解决方案。本文将会介绍 glide glide 是在 vendor 之后出来的。glide 的依赖包信息在 glide.yaml 和 glide.lock 中,前者记录了所有依赖的包,后者记录了依赖包的版本信息 工作原理 Glide 扫描应用程序或库的源代码以确定所需的依赖项。要确定版本和位置(例如forks的别名),Glide会使用规则读取 glide.yaml 文件。有了这些信息,Glide将检索所需的依赖项。 遇到依赖包时,会扫描其导入以确定依赖关系的依赖关系(传递...阅读全文

博文 2019-03-06 21:34:40 aoho

【每日笔记】【Go学习笔记】2019-01-02 Codis笔记

作者:施洪宝 一. go 基础 go通过锁或者原子操作解决协程之间的竞争问题, 本文主要介绍锁 go通过通道(有缓冲和无缓冲)解决协程之间的通信问题, 一个协程可能同时与多个其他协程通信, 此时可以通过select进行处理 1.1 锁 mutex mutex即是一般的互斥锁, 只有一个协程可以获取锁, 其他协程获取时会被阻塞 rwmutex rwmutex为读写锁, 某一时刻可能存在多个读锁或者一个写锁 lock可以获取写锁, 该调用会一直阻塞直到其他协程释放锁, 写锁的优先级高于读锁; unlock释放写锁 rlock获取读锁, 当只有读锁或者没有锁时可以成功获取锁, 否则被阻塞; runlock释放读锁 1.2 select select{ case communication clau...阅读全文

博文 2019-01-07 10:34:46 LNMPR源码研究

中文转换成html中的utf-8

在HTML中,中文的“好好学习”可以表示为 “好好学习”在项目中,需要对接短信告警,短信告警返回数据要求是utf8的后来继续沟通,才发现要的是html-utf8的;没有找到合适的golang工具包,涉及语言转码的包主要有mahonia,支持各种格式的数据转换,gbk,utf8,gb2312net/html,支持网页转码,改的是转换网页中的<,>,&,',',.根据网上经验,提供三个版本的转换:Javascript function ConvUtf8(obj) { returnobj.replace(/[^\u0000-\u00FF]/g,function($0) {returnescape($0).replace(/(%u)(\w{4})/gi, "&#x$2;") }); } JAVA p...阅读全文

博文 2020-02-09 15:32:41 一把人才

Go的包管理工具(三):Go Modules

在前面的文章,我们先是介绍了Go 的几种包管理方式,然后具体介绍了一种包管理的工具: glide。随着 Go 1.11 的发布,官方的包管理工具 Go Modules 变得流行起来。在发布不久的 Go 1.12 版本中,增强了对 Go Modules 的支持。本文将会介绍如何在项目中安装和使用 Go Modules 。 安装和激活 Modules 的支持 前置条件 如本文开头所说,从 Go 1.11 版本才支持 Go Modules。所以,默认 Go 的版本为 >= 1.11。 $ go version go version go1.12 darwin/amd64 笔者安装了最新的 1.12 版本。 激活使用 安装后,我们可以通过以下两种方式之一激活模块支持: 在$GOPATH/src 之外...阅读全文

Linux服务器安全策略实战免费送给运维工程师

课程介绍 安全是IT行业一个老生常谈的话题了,从近几年层出不穷的安全事件中折射出了很多安全问题,处理好信息安全问题已变得刻不容缓。 因此做为运维人员,就必须了解一些安全运维准则,同时,要保护自己所负责的业务。 本课程主要讲解Linux服务器的安全策略。 课程目标 • 掌握Linux服务器安全策略 适合人群 • 运维工程师 课时列表 • 课时1:Linux服务器后门入侵检测工具和使用方法 • 课时2:Linux服务器遭受网络攻击后的处理思路和措施 开始学习http://click.aliyun.com/m/27897...阅读全文

Go 包依赖管理工具 —— govendor

govendor 是一个基于 vendor 机制实现的 Go 包依赖管理命令行工具。与原生 vendor 无侵入性融合,也支持从其他依赖管理工具迁移,可以很方便的实现同一个包在不同项目中不同版本、以及无相互侵入的开发和管理。 vendor 特性 最开始的时候,Go 并没有提供较为妥当的包管理工具。从 1.5 版本开始提供了 vendor 特性,但需要手动设置环境变量 GO15VENDOREXPERIMENT=1。 在执行 go build 或 go run 命令时,会按照以下顺序去查找包: 当前包下的 vendor 目录 向上级目录查找,直到找到 src 下的 vendor 目录 在 GOROOT 目录下查找 在 GOPATH 下面查找依赖包 在发布 1.6 版本时,该环境变量的值已经默认设...阅读全文

博文 2019-03-25 18:34:39 Jioby

Go的包管理 - go modules

一、go modules使用 前言 Go的依赖包管理是被大家诟病最多的一个地方,先后出现了glide、godep、dep等包管理工具,但是Go的包管理一直没有一个统一的方法,不同的项目可能会使用不同的管理工具。go modules是go 1.11之后推出的一种新的包管理工具,解决了之前的包管理中存在的一些问题。 项目不必放在GOPATH/src下 可以自动下载依赖包 版本控制功能 go modules介绍 Go 1.11和1.12包含了对modules的初步支持。modules是Go的新的依赖管理系统,能够使依赖项的版本信息更加清晰并且更加容易管理。这篇文章介绍了使用modules的基本操作。 module是Go的包的集合,以文件树的形式存储在顶层目录的go.mod文件中。go.mod文件定...阅读全文

博文 2019-09-29 14:02:38 朝阳区群众

初学Python需要安装那些软件?

初学Python需要安装的软件 Python解释器 IDE pip代理 虚拟环境 Python解释器的安装 1.首先我们移步官网,下载最新版本的python-3.6 Python官网:https://www.python.org/ 在这里插入图片描述 选择要下载的文件: 在这里插入图片描述 可以根据你自己本身的Windows电脑位数选择下载。 下载好安装包之后,就和你平常安装QQ一样点击下一步就可以了! 在这里插入图片描述 也是有需要特别注意的!! 记得勾选 Add Python 3.6 to PATH。 1、 按 Win+R 键,输入 cmd 调出命令提示符,输入 python: 在这里插入图片描述 也可以在开始菜单中搜索 IDLE: 在这里插入图片描述 对于初学者而言用Windows系统...阅读全文

博文 2019-09-27 13:32:51 aside section ._1OhGeD

golang 包依赖管理 godep 使用

介绍:godep是解决包依赖的管理工具,目前最主流的一种,原理是扫描记录版本控制的信息,并在go命令前加壳来做到依赖管理。 1.安装:go get github.com/tools/godep 2.编译和运行项目用godep管理后,要编译和运行项目的时候再用 go run 和 go build 显然就不行了,因为go命令是直接到GOPATH目录下去找第三方库。而使用godep下载的依赖库放到Godeps/workspace目录下的; `godep go run main.gogodep go buildgodep go installgodep go test` godep中的go命令,就是将原先的go命令加了一层壳,执行godep go的时候,会将当前项目的workspace目录加入GOP...阅读全文

博文 2019-11-04 10:33:53 风云

Go教程:第一篇介绍Go

第一篇: 介绍 本文是我们《Golang系列教程》开篇文章,文章中讲介绍Go语言,并讨论Go和其他语言之间 的优劣性。 介绍 Go 也被称为Golang 是一个由Google开发的开源,编译型,静态类型的语言。关键的创始人有: Ro Pike,Ken Thompson 和Robert Griesemer。Go于2009年向公众开放。 Go 是一个通用的语言,它提供了 简单的语法,健壮的标准库。最重要是:Go能够创建高可用,可扩展的web应用。 当然了,Go也能用于开发命令行应用,桌面应用以及移动应用。 Go的优势 在众多编程语言如: Python,ruby,nodejs.... 云集的情况下,为什么要选择Go作为服务端的编程语言呢? 这里列出来一些,我在选择Go时,所带来的好处。 简单的语法...阅读全文

[系列] - 使用 go modules 包管理工具(一)

概述 我想实现一个开箱即用的 API 框架的轮子,这个轮子是基于 Gin 基础上开发的。 为什么是开箱即用,它会集成哪些功能? 以上功能点,都是常用的,后期可能还会增加。 废话不多说,咱们开始吧。 创建一个项目,咱们首先要考虑一个依赖包的管理工具。 常见的包管理有,dep、go vendor、glide、go modules 等。 最开始,使用过 dep,当时被朋友 diss 了,推荐我使用 go modules 。 现在来说一下 go modules ,这个是随着 Go 1.11 的发布和我们见面的,这是官方提倡的新的包管理。 说一个环境变量:GO111MODULE,默认值为 auto 。 当项目中有 go.mod 时,使用 go modules 管理,反之使用 旧的 GOPATH 和 v...阅读全文

博文 2019-08-26 19:32:46 新亮

go modules 的一些细节

前言 在一些Java的项目中,有 Maven等这些版本管理工具,可以很好的管理各种版本依赖关系,但是在 Golang 的项目中,之前官方并没有提供版本管理工具,以前都是用 go get 进行安装, 随着项目的变大, 就处理这种依赖关系就变得很麻烦, 原文 如果你对Go感兴趣, 可以关注我的公众号: GoGuider vendor 机制 为了解决版本依赖问题, 官方出了一个 vendor 机制,将项目依赖的包都放在该目录中,但这也并没有很好地管理依赖的版本。 因为vendor 机制有几个大的问题: 1、需要将外部库放到项目中, 导致项目体积变得很大 2、项目版本很难指定和控制 go dep 和 go modules 之后官方出了一个准官方版本管理工具 go dep,这也算是 go module...阅读全文

你的Helm安全吗?

一、背景Kubernetes是目前最为流行、成为事实标准的容器集群管理平台,为容器化应用提供了部署运行、资源调度、服务发现和动态伸缩等一系列完整功能。在Kubernetes当中,用户通过使用API对象,如Pod、Service、Deployment等,来描述应用的程序规则,而这些资源对象的定义一般需要写入一系列的YAML文件中,然后通过 Kubernetes 命令行工具Kubectl进行部署。由于通常应用程序都涉及到多个Kubernetes API对象,而要描述这些API对象就可能要同时维护多个YAML文件,从而在进行 Kubernetes 软件部署时,通常会面临下述几个问题:如何管理、编辑和更新这些这些分散的 Kubernetes 应用配置文件如何把一套相关的配置文件作为一个应用进行管理如...阅读全文

【Go】VScode Go tools install issue

vscode在安装go-tools相关工具包时,总是failed,原因是国内对proxy.golang.org的墙网络问题 首先打开terminal,go env,找到GOPROXY 然后输入 go env -w GOPROXY=https://goproxy.cn 此时再进VScode按go插件的提示安装全部工具,即可有代码提示等功能了 相关issue链接 https://github.com/golang/go/issues/31755 https://goproxy.cn...阅读全文

博文 2020-04-12 19:32:41 风愿1996

Mac 神兵利器(二) 极简软件清单

摘要: 作为一个非常爱好折腾的Mac重度用户,在尝试了不少于50次重装系统经历以及安装了几乎所有软件类别的N多软件后,决定分享一下自己的软件清单。 选择app的三个原则: 尽量使用系统原生软件,比如日历,提醒事项,备忘录,Pages,Keynote等 同类软件只保留一款 能不装的软件就不装 时间管理 关... 作为一个非常爱好折腾的Mac重度用户,在尝试了不少于50次重装系统经历以及安装了几乎所有软件类别的N多软件后,决定分享一下自己的软件清单。 **选择app的三个原则:** - 尽量使用系统原生软件,比如日历,提醒事项,备忘录,Pages,Keynote等 - 同类软件只保留一款 - 能不装的软件就不装 **时间管理** ![图片描述](http:...阅读全文

govendor包管理工具的使用

1.govendor简介golang工程的依赖包经常使用go get命令来获取,例如:go get github.com/kardianos/govendor ,会将依赖包下载到GOPATH的路径下。常用的依赖包管理工具有godep,govendor等,在Golang1.5之后,Go提供了GO15VENDOREXPERIMENT 环境变量(Go 1.6版本默认开启该环境变量),用于将go build时的应用路径搜索调整成为 当前项目目录/vendor 目录方式。通过这种形式,我们可以实现类似于 godep 方式的项目依赖管理。2.安装与使用2.1. 安装go get -u -v github.com/kardianos/govendor2.2. 使用进入到项目目录cd /home/gopat...阅读全文

Beego脱坑(三)Router

---title: Beego脱坑(三)Routertags: go,beegoauthor : Clown95---beego中的路由的主要功能是实现从请求地址到实现方法 ,简单的说就是路由就是能够自动匹配url地址,并调用相应的控制器处理信息。在之前创建beego项目中,我们为了完成hello world的输出,在 router.go 中添加了```gobeego.Router("/hello",&controllers.HelloControllers{})```我们这段代码的意思就是把 /hello 这个地址分配给 HelloControllers 这个控制器去处理。# 简单路由我们先来了解下最基本的 GET路由和PSOT路由。## GET路由```gofunc (hello * H...阅读全文

go项目结构怎样?学习go语言怎么样?

都说go语言比较火,都开始学习go语言编程,那么go语言项目结构是怎样的?我们在学go语言时应该注意什么呢? 在进行Go语言开发的时候,我们的代码总是会保存在$GOPATH/src目录下。在工程经过go build、go install或go get等指令后,会将下载的第三方包源代码文件放在$GOPATH/src目录下,产生的二进制可执行文件放在$GOPATH/bin目录下,生成的中间缓存文件会被保存在$GOPATH/pkg 下。 如果我们使用版本管理工具(Version Control System,VCS,常用如Git)来管理我们的项目代码时,我们只需要添加$GOPATH/src目录的源代码即可。bin 和pkg 目录的内容无需版本控制。 Go语言中也是通过包来组织代码文件,我们可以引用...阅读全文

博文 2019-11-12 17:31:42 zhouzhou2018

【Go】类似csv的数据日志组件设计

文链接:https://blog.thinkeridea.com/... 我们业务每天需要记录大量的日志数据,且这些数据十分重要,它们是公司收入结算的主要依据,也是数据分析部门主要得数据源,针对这么重要的日志,且高频率的日志,我们需要一个高性能且安全的日志组件,能保证每行日志格式完整性,我们设计了一个类 csv 的日志拼接组件,它的代码在这里 datalog。 它是一个可以保证日志各列完整性且高效拼接字段的组件,支持任意列和行分隔符,而且还支持数组字段,可是实现一对多的日志需求,不用记录多个日志,也不用记录多行。它响应一个 []byte 数据,方便结合其它主键写入数据到日志文件或者网络中。 使用说明 API 列表 NewRecord(len int) Record 创建长度固定的日志记录 N...阅读全文

博文 2019-07-21 12:02:36 thinkeridea

Supervisor 的使用和进阶 (4) - supervisor Event 的使用

本文主要介绍 supervisor Event 的功能。 supervisor 作为一个进程管理工具,在 3.0 版本之后,新增了 Event 的高级特性, 主要用于做(进程启动、退出、失败等)事件告警服务。 Event 特性是将监听的服务(listener)注册到supervisord中,当supervisord监听到相应事件时,将事件信息推送给监听对应事件的listener。 事件类型 Event 可以设置 27 种事件类型,可以分为如下几类: 1. 监控进程状态转移事件; 2. 监控进程状态日志变更事件; 3. 进程组中进程添加删除事件; 4. supervisord 进程本身日志变更事件; 5. supervisord 进程本身状态变更的事件; 6. 定时触发事件。 事件可以被单独监...阅读全文

24.依赖管理及go module

Go语言的依赖管理随着版本的更迭正逐渐完善起来。 windows开启go module:set GO111MODULE=on Linux开启go module:export GO111MODULE=on 依赖管理 为什么需要依赖管理 最早的时候,Go所依赖的所有的第三方库都放在GOPATH这个目录下面。这就导致了同一个库只能保存一个版本的代码。如果不同的项目依赖同一个第三方的库的不同版本,应该怎么解决? godep Go语言从v1.5开始开始引入vendor模式,如果项目目录下有vendor目录,那么go工具链会优先使用vendor内的包进行编译、测试等。 godep是一个通过vender模式实现的Go语言的第三方依赖管理工具,类似的还有由社区维护准官方包管理工具dep。 安装 执行以下命令...阅读全文

博文 2020-05-05 13:32:44 雪上霜