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

Golang官方依赖管理工具:dep

在这里声明一下,百度或者google看到的godep不是我这篇博文说的dep,那它们是什么关系呢?按照Peter Bourgon博文来说,它们的作者都有相同的人,但是一个是dep是官方版本,godep是第三方工具。 我今天介绍的是dep,之前也有介绍过glide,有兴趣的可以到Golang依赖管理工具:glide从入门到精通使用看看。 现在还有一个疑问是为什么官方现在要支持依赖管理了呢?我个人认为有如下原因(勿喷,如果不同或者遗漏欢迎留言补充): 第三方依赖管理很多,虽然很好用,但是很少可以兼容的,结果--乱; 官方的包管理为了增加社区的凝聚力,保持Go开箱即用的简单特性,不需要大家再安装各种第三方工具了,而且第三方工具都会过来兼容官方版的; 还有一个官话,为了go更好的发展; dep的FA...阅读全文

博文 2017-08-09 02:20:34 梦朝思夕

Go语言圣经中文版

在C语言发明之后约5年的时间之后(1978年),Brian W. Kernighan和Dennis M. Ritchie合作编写出版了C语言方面的经典教材《The C Programming Language》,该书被誉为C语言程序员的圣经,作者也被大家亲切地称为K&R。 同样在Go语言正式发布(2009年)约5年之后(2014年开始写作,2015年出版),由Go语言核心团队成员Alan A. A. Donovan和K&R中的Brian W. Kernighan合作编写了Go语言方面的经典教材《The Go Programming Language》。Go语言被誉为21世纪的C语言,如果说K&R所著的是圣经的旧约,那么D&K所著的必将成为圣经的新约。 镜像: http://books.stu...阅读全文

博文 2016-03-29 07:00:05 smallmaple

go依赖管理-govendor

Golang 官方并没有推荐最佳的包管理方案。到了1.5版本时代,官方引入包管理的设计,加了 vendor 目录来支持本地包管理依赖。官方 wiki 推荐了多种支持这种特性的包管理工具,如:Godep、gv、gvt、glide、govendor等。 下面简要介绍一个我在项目中用到的 -- govendor。该工具将项目依赖的外部包拷贝到项目下的 vendor 目录下,并通过 vendor.json 文件来记录依赖包的版本,方便用户使用相对稳定的依赖。对于 govendor 来说,依赖包主要有以下多种类型: 状态 缩写状态 含义 +local l 本地包,即项目自身的包组织 +external e 外部包,即被 $GOPATH 管理,但不在 vendor 目录下 +vendor v 已被 go...阅读全文

博文 2017-05-02 16:00:34 happen

go依赖包管理工具对比

July 10, 2017 in Tech GOPATH和GOROOT GOROOT并不是必须要设置的。 GOPATH必须要设置,但并不是固定不变的 本项目内部的依赖 管理外部的依赖包 使用GOPATH来管理外部依赖 vendor godep glide govendor golang官方dep 各依赖管理工具对比 gvt vendor的问题 当开始真正用go去做项目的时候,不可避免的就会遇到依赖包的问题。go的依赖包管理与java+maven的依赖管理不太一样,我们从GOPATH开始逐渐理解其思想,然后再对比下目前常用的依赖包管理工具。 GOPATH和GOROOT 初学者很容易会被这两个环境变量给搞晕。 GOROOT并不是必须要设置的。 GOROOT不是必须要设置的。参见Installin...阅读全文

博文 2017-07-30 05:45:50 伊布

go语言的chan

chan是一个FIFO队列,chan分成两种类型同步和异步同步的chan完成发送者和接受者之间手递手传递元素的过程,必须要求对方的存在才能完成一次发送或接受异步的chan发送和接受都是基于chan的缓存,但当缓存队列填满后,发送者就会进入发送队列, 当缓存队列为空时,接受者就会接入等待队列。 chan的数据结构: struct Hchan { uintgo qcount; // total data in the q uintgo dataqsiz; // size of the circular q uint16 elemsize; uint16 pad; // ensures proper alignment of the buffer that follows Hchan in mem...阅读全文

博文 2015-05-18 03:00:01 richmonkey

谈谈go.sum

众所周知,Go 在做依赖管理时会创建两个文件,go.mod 和 go.sum。相比于 go.mod,关于 go.sum 的资料明显少得多。自然,go.mod 的重要性不言而喻,这个文件几乎提供了依赖版本的全部信息。而 go.sum 看上去就是 go module 构建出来的天书,而不是什么人类可读的数据。 但实际上,日常开发中我们仍然不得不跟 go.sum 打交道(通常是解决这个文件带来的合并冲突,抑或试图手工调整里面的内容)。如果不了解 go.sum,只凭经验随便涂改,不一定能够改对。因此,为了更好地掌握 Go 的依赖管理,完全有必要了解 go.sum 的来龙去脉。 鉴于涉及 go.sum 的资料是如此地稀少(即使 Go 官方文档中,对于 go.sum 的描述也是支离破碎的),我花了些时间...阅读全文

博文 2019-12-27 22:32:41 spacewander

《The Way to Go》中文版《Go入门指南》

**《The Way to Go》**经原作者授权今日起以每日一小节的进度开始翻译,中文名**《Go入门指南》**。 本书以开源书籍的形式分享在Github上,提供给有需要的Go语言爱好者。 如果有翻译不当的地方,还望大家能够 **pull request** 以为本书提供更好的翻译质量。 repo地址:[https://github.com/Unknwon/the-way-to-go_ZH_CN][1] [1]: https://github.com/Unknwon/the-way-to-go_ZH_C...阅读全文

告别GOPATH,快速使用 go mod(Golang包管理工具)

如果你还在使用 GOPATH 模式来开发Golang程序,那么你可以参考本文来告别 GOPATH,并带给你一个方便的包管理工具。关于 go mod 的说明和简单使用,可以参考:1、Go1.1.1新功能module的介绍及使用2、Introduction to Go Modules3、Go 1.11 Modules 官方说明文档使用go mod 管理项目,就不需要非得把项目放到GOPATH指定目录下,你可以在你磁盘的任何位置新建一个项目,比如:新建一个名为 wserver 的项目,项目路径 D:\test\wserver (注意,该路径并不在GOPATH里) 进入项目目录 D:\test\wserver 里,新建一个 go源码文件: main.go 然后在 D:\test\wserver 里打...阅读全文

Golang依赖管理工具:glide从入门到精通使用

介绍 不论是开发Java还是你正在学习的Golang,都会遇到依赖管理问题。Java有牛逼轰轰的Maven和Gradle。 Golang亦有godep、govendor、glide、gvt、gopack等等,本文主要给大家介绍gilde。 glide是Golang的包管理工具,是为了解决Golang依赖问题的。 为什么需要glide? 原因很简单,Go 语言原生包管理的缺陷。罗列一下golang的 get 子命令管理依赖有很多大缺陷: 能拉取源码的平台很有限,绝大多数依赖的是 github.com 不能区分版本,以至于令开发者以最后一项包名作为版本划分 依赖 列表/关系 无法持久化到本地,需要找出所有依赖包然后一个个 go get 只能依赖本地全局仓库(GOPATH/GOROOT),无法将库...阅读全文

博文 2017-07-22 05:33:09 梦朝思夕

Go 系列教程 —— 19. 接口(二)

欢迎来到 Golang 系列教程的第 19 个教程。接口共有两个教程,这是我们第二个教程。如果你还没有阅读前面的教程,请你阅读[接口(一)](https://studygolang.com/articles/12266)。 ### 实现接口:指针接受者与值接受者 在[接口(一)](https://studygolang.com/articles/12266)上的所有示例中,我们都是使用值接受者(Value Receiver)来实现接口的。我们同样可以使用指针接受者(Pointer Receiver)来实现接口。只不过在用指针接受者实现接口时,还有一些细节需要注意。我们通过下面的代码来理解吧。 ```go package main import "fmt" type Describer int...阅读全文

博文 2018-02-01 15:44:37 heyulong

Go后台管理系统Gfast 管理系统

基于GF(Go Frame)的后台管理系统 前端采用ruoyi-ui 、Vue、Element UI。 后端采用GO语言 框架 GF(Go Frame)。 本项目由奇讯科技团队开发。 内置功能 - 用户管理:用户是系统操作者,该功能主要完成系统用户配置。 - 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。 - 岗位管理:配置系统用户所属担任职务。 - 菜单管理:配置系统菜单,操作权限,按钮权限标识等。 - 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。 - 字典管理:对系统中经常使用的一些较为固定的数据进行维护。 - 参数管理:对系统动态配置常用参数。 - 操作日志:系统正常操作日志记录和查询;系统异常信...阅读全文

go-admin: 基于golang搭建后台管理中心

go-admin 是基于golang的后台管理中心搭建框架,利用 go-admin 可以利用极少的代码搭建起一个具有rbac认证,数据增删改查等功能的后台管理中心。 go-admin 中文介绍文档:https://github.com/chenhg5/go-admin/blob/master/README_CN.md安装使用文档:https://github.com/chenhg5/go-admin/wiki有问题与建议,欢迎加入qq群:75666485...阅读全文

博文 2018-08-11 21:35:00 嘎嘎嘎8333

golang arm 交叉编译

set GOOS=linux set GOARCH=arm cd go/src make.bat cd .. cp bin/%GOOS%_%GOARCH% %GOROOT%/bin -r cp pkg/%GOOS%_%GOARCH% %GOROOT%/pkg -r cp pkg/tool/%GOOS%_%GOARCH% %GOROOT%/pkg/tool -r 使用百度手机助手,开启USB调试:点击多次“版本号”,开发者选项->启用USB调试 使用百度手机助手的bdadb.exe shell,进入后su,手机上赋予root权限 cp /sdcard/download/linux_hello /data/ chmod 777 /data/linux_hello (sdcard是fat32格式,...阅读全文

博文 2015-03-17 09:00:01 chuqingq

诸神之战|福建赛区圆满收官,IP“论剑”引爆现场

8月18日,阿里巴巴诸神之战全球创客大赛(福建赛区)暨全球版权投资与交易论坛在厦门圆满收关。来自阿里巴巴创新中心、阿里系合作伙伴、IP合作领域名企、投资机构及福建的创业精英们齐聚一堂,共同探讨产业合作、投资趋势、明晰IP的发展前景。厦门市集美区人大副主任陈来福、集美区科技局局长张长明出席活动。 福建赛区冠军强势出炉 2017阿里巴巴诸神之战福建赛区于7月正式启动,经过了BP报名、线上评分、大赛路演等多个环节,最终,8月18日迎来赛区决赛。决赛分为文创组与商业组,厦门市创投、集美产投参与,由奥飞贝肯投资、铂欣资本、达晨创投、信息资本、九鼎创投、九贤资本等投资机构担任评委,进行严格比赛。最终,泊喜、游仁科技分别拿下了福建赛区文创组及商业组两个冠军席位,也同时获得了诸神之战...阅读全文

为什么“王者荣耀”让你那么上瘾?

敌军还有5秒钟到达战场,请做好准备!研究产品,“王者荣耀”为什么这么火?它的用户成长体系是怎样的?用户到底是怎么上瘾的?作为产品经理,有哪些是可以借鉴学习的! 本文的小编将从Hooked上瘾模型,全面分析《王者荣耀》到底是怎么一步步让用户上瘾的。 王者荣耀和Hooked模型 王者荣耀 有人说,已经可以根据玩王者荣耀的程度分为三类人:不玩王者荣耀的人;玩王者荣耀,但不严重影响学习和工作的人;玩王者荣耀,但不能自拔、后果严重的人。 先来看看几组数据:根据腾讯互娱发布会的数据,“王者荣耀”注册用户已超过2亿,日活用户超8000万,每7个人就有一个在玩,手游王者荣耀已经成为中国游戏的王者游戏;根据极光大数据显示:你有2亿战友,也有2亿敌人!如今王者荣耀渗透率达到22.3%,其中女性占比54.1%,2...阅读全文

博文 2017-10-02 16:34:47 星火燎原

分布式作业管理系统Asgard

## 简介 Asgard是设计用于综合解决常驻进程应用、计划任务、定时任务的分布式作业管理系统。 ## 架构设计 ![架构设计图](https://raw.githubusercontent.com/dalonghahaha/Asgard/master/doc/Asgard.png) - Asgard系统由web节点、master节点、agent节点组成。 - web节点主要功能包括实例管理、分组管理、作业配置、作业运行状态控制、作业运行状态查看、日志查询 - master节点负责agent节点的状态监测,同时接收并转存agent节点上报的运行时数据 - agent节点接收web节点的指令在相应的服务器中运作相关作业 - master节点和agent节点之间通...阅读全文

开源项目 2020-06-17 16:50:07

如何编写一个分布式数据库

大家好, 我是开源项目 分布式 NewSQL 数据库 TiDB 和 分布式缓存 Codis 的 创始人 刘奇, 之前在京东, 豌豆荚做 infrastructure 相关的事情, 现在在创业 (PingCAP), 方向是分布式数据库. 最近如果有朋友关注开源社区或者HackerNews 的话,可能会发现一个叫 TiDB 的数据库项目吸引了一些眼球(https://github.com/pingcap/tidb ) 。 这是我们开源的第一个东西,短短几天得到了过千Star,特别感谢大家的支持和鼓励。 今天主要介绍一下 NewSQL 与 TiDB 的设计实现, 未来的一些 Roadmap 以及 一些做开源项目的心得。 大家可能经常用数据库,但是很少写一个数据库(实在是有点 hardcore),今...阅读全文

博文 2015-09-24 10:26:00 刘奇

Golang 守护进程

package main import ( "fmt" "os" "os/exec" "path/filepath" ) func main() { fmt.Println(os.Getppid()) if os.Getppid() != 1 { //判断当其是否是子进程,当父进程return之后,子进程会被 系统1 号进程接管 filePath, _ := filepath.Abs(os.Args[0]) //将命令行参数中执行文件路径转换成可用路径 cmd := exec.Command(filePath) //将其他命令传入生成出的进程 cmd.Stdin = os.Stdin //给新进程设置文件描述符,可以重定向到文件中 cmd.Stdout = os.Stdout cmd.Std...阅读全文

博文 2015-02-11 19:00:02 未来还没来

Golang环境安装和依赖管理

Golang一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。Golang提供了方便的安装包,支持Windows、Linux、Mac系统。 下载安装包 Golang的官网是https://golang.org/,如果官网打不开,可以访问https://golang.google.cn/这个域名。在官网点击Download Go会进入下载页,可以看到这里提供了针对各个系统的安装包,也提供了源码,可以下载源码编译安装。 下载运行安装包后,在terminal中执行go env命令,如果出现下面的输出说明已经安装成功。 GOROOT与GOPATH 仔细看上面的输出,会发现其中有一个GOPATH,又有一个GOROOT,那么到底哪个才是Golang的运行环境呢。 首先访问一下GOROOT这个...阅读全文

博文 2018-07-11 02:34:42 simpleapples

golang连接kafka

golang连接kafka的例子好少,而支持offset追踪者更少,但也是基础的要求。”github.com/bsm/sarama-cluster”结合“github.com/Shopify/sarama”满足了此要求。 环境: golang 1.7 kafka 0.10 centos7.2 package main import ( "fmt" "os" "strings" "time" "github.com/Shopify/sarama" "github.com/bsm/sarama-cluster" //support automatic consumer-group rebalancing and offset tracking "github.com/golang/glog" )...阅读全文

博文 2016-11-05 03:00:01 dazheng

golang内存释放

一、前言 一般在golang运行完成初始化时,会创建专门的goroutine用于后台监控、定期任务,这其中也涉及到了强制垃圾回收、内存释放等任务。 // 主goroutine. func main() { // ... // m0: 系统主线程 // g0:主goroutine // m0、g0是比较特殊的 仅用于main goroutine的父goroutine g.m.g0.racectx = 0 if sys.PtrSize == 8 { // 64bits 系统 maxstacksize = 1000000000 } else { // 32bits系统 maxstacksize = 250000000 } // 新建M(物理线程) mainStarted = true if GOA...阅读全文

博文 2019-01-09 22:34:43 神奇的考拉

golang获取调用者的方法名及所在源码行数

package main import "runtime" import "log" func main() { test() } func test() { test2() } func test2(){ pc,file,line,ok := runtime.Caller(2) log.Println(pc) log.Println(file) log.Println(line) log.Println(ok) f := runtime.FuncForPC(pc) log.Println(f.Name()) pc,file,line,ok = runtime.Caller(0) log.Println(pc) log.Println(file) log.Println(line) log....阅读全文

博文 2015-02-04 03:00:00 wangxusummer

golang x.(type) 用法

21天精品区块链课程免费学习,深入实战行家带路,助力开发者轻松玩转区块链! >>> golang中x.(type)只能在switch中使用 func MyPrintf(args ...interface{}) { for _, arg := range args { switch arg.(type) { case int: fmt.Println(arg, "is an int value.") case string: fmt.Println(arg, "is a string value.") case int64: fmt.Println(arg, "is an int64 value.") default: fmt.Println(arg, "is an unknown type....阅读全文

博文 2018-09-01 14:33:12 Robin3D

阿里云栖大会展示中国计算力量 吸引全球2万开发者参与

10月14日-15日,阿里云2015云栖大会Computing Conference在杭州召开。大会吸引了来自全球约2万名开发者参加。阿里云及其合作伙伴在大会上发布了一系列新的云计算技术,200多家云上企业展示了量子计算、人工智能等前沿科技。 大会由杭州市政府和阿里巴巴集团联合主办,阿里云承办,共设置两个主论坛、约30场分论坛和3场开发者大赛。浙江省省长李强、阿里巴巴集团董事局主席马云出席大会并发表主题演讲。 作为中美技术差距最小的行业之一,中国的计算力量已全面参与到全球的竞争中。云栖大会则是中国计算力量的一次集中展示。作为中国最大的云计算服务平台,阿里云重塑了开发者获取计算资源的方式,帮助创新创业者面向全球提供服务。 创业进入“快消时代” 契合与“互联网、创新、创业...阅读全文

30亿条个人信息被盗,全站HTTPS迫在眉睫

本文首发于微信公众号:网络安全生命周期原文链接:30亿条个人信息被盗,全站HTTPS迫在眉睫【特大流量劫持事件】据新华网报道,日前,浙江绍兴市越城区公安分局侦破一起特大流量劫持案,涉案主角瑞智华胜,涉嫌非法窃取用户个人信息30亿条,涉及百度、腾讯、阿里、京东、新浪和今日头条等全国96家互联网公司产品,几乎涵盖了国内主要互联网企业。原来这家公司是通过流量劫持(HTTP劫持)的方式,非法收集个人信息并盗用用户认证凭据(Cookie)进行精准营销(加粉、点赞、发帖、添加广告等)。【根因分析】目前广泛使用的HTTP协议,由于是明文传输,往往会被劫持,其中用于身份认证的凭据(Cookie)很容易被窃取,此外劫持者还会在返回的网页内容中添加js脚本,用于展示广告等原始网页中并不存在的内容。要避免被劫持,...阅读全文

Golang 中函数和方法的区别

golang 函数以及函数和方法的区别 原创 2016年12月11日 20:12:54 4363 在接触到go之前,我认为函数和方法只是同一个东西的两个名字而已(在我熟悉的c/c++,python,java中没有明显的区别),但是在golang中者完全是两个不同的东西。官方的解释是,方法是包含了接收者的函数。到底什么意思呢。 首先函数的格式是固定的,func+函数名+ 参数 + 返回值(可选) + 函数体。例 func main() { fmt.Println("Hello go") } 在golang中有两个特殊的函数,main函数和init函数,main函数不用介绍在所有语言中都一样,它作为一个程序的入口,只能有一个。init函数在每个package是可选的,可有可无,甚至可以有多个(但...阅读全文

博文 2018-01-23 22:33:04 coder_kev

知物由学 | 如何从勒索软件的攻击中全身而退

欢迎访问网易云社区,了解更多网易技术产品运营经验。“知物由学”是网易云易盾打造的一个品牌栏目,词语出自汉·王充《论衡·实知》。人,能力有高下之分,学习才知道事物的道理,而后才有智慧,不去求问就不会知道。“知物由学”希望通过一篇篇技术干货、趋势解读、人物思考和沉淀给你带来收获的同时,也希望打开你的眼界,成就不一样的你。当然,如果你有不错的认知或分享,也欢迎通过邮件投稿 :zhangyong02@corp.netease.com 原文:How To Survive A Ransomware Attack -- And Not Get Hit Again作者:Kate O'Flaherty2017年,WannaCry(蠕虫病毒)因为攻陷了NHS(英国国家医疗服务体系)从而一举成名,并且自此之后,类...阅读全文

博文 2018-11-15 12:34:41 网易云社区

为什么Go在中国这么流行?

文章根据谷歌的trends,国内Go相关网站的Alexa以及Baidu的golang搜索排名等分析Go在中国流行的可能原因。其中提到本社区:studygolang.com 是中国Go社区的领跑者。 看到这篇文章很激动,很久没有维护该社区了,接下来会好好维护,争取做成Golang在国内最好、最大的社区。 文章地址:[why-is-go-popular-in-china](http://herman.asia/why-is-go-popular-in-china) ...阅读全文

D、GO、Rust 谁会在未来取代 C?为什么?

不要管我的地位和 D 语言创造者之一的身份。我会坦诚的回答这个问题。我熟悉 Go 和 Rust,并且知道 D 的缺点在哪里。我鼓励人们在 Rust 和 Go 社区相似职位的人可以提出他们诚恳的观点。接着,我们开始吧。 首先,C++ 应该放在问题的哪个位置。不管它是否取代 C,或是成为取代 C 的候选人之一,C++ 是这个等式的一个关键部分。它是最接近 C 的,同时也是从 C 中来的。在下面几个问题中我会假设 C++ 是把取代 C 作为目标的。 每一个语言都有一些基础优势(我称之为“十倍优势”,因为在一定的基准上比较其他确实效率更高)和数个挑战。这些语言在未来能否取代 C 语言取决于它们如何利用它们的十倍优势,并且如何克服他们的数个挑战...阅读全文

博文 2015-11-10 19:00:00 babybright123, coding12, 你是晴天, 弃天帝, 机智的祺祺, Iam魔方

go中方法的接收者是值或者指针的区别

值类型的变量和指针类型的变量先声明一个结构体:type T struct { Name string } func (t T) M1() { t.Name = "name1" } func (t *T) M2() { t.Name = "name2" }12345678910111234567891011M1() 的接收者是值类型 T, M2() 的接收者是值类型 *T , 两个方法内都是改变Name值。下面声明一个 T 类型的变量,并调用 M1() 和 M2() 。 t1 := T{"t1"} fmt.Println("M1调用前:", t1.Name) t1.M1() fmt.Println("M1调用后:", t1.Name) fmt.Println("M2调用前:", t1.Name...阅读全文

博文 2016-07-27 15:00:02 zlingh

liteIDE 快捷键改装

LiteIDE改装 最近一直都在使用liteIDE做开发。公司的项目很紧张,但是在这个周末。还是偷偷的对liteIDE小不爽的地方进行了一些小的改造。 IDE上的run按钮就是运行当前的go文件。 首先我们项目运行只是运行统一或者少数的入口点每次点开固定的文档才能run真的是够了。另外一个主要的原因在于liteIDE没有project管理支持。 而且这个IDE貌似没有出很长时间一般的RCP平台都是有插件开发的。但是这没有插件开发(貌似是有。而且是用python写的)但是,没找到文档(截至 2015年1月19日)也是醉了。 关键入口点还是我在google Code上找到的一个文档。 在配置中的LiteBuild里面有一个gosrc.xml 这个配置文件能修改buttion调用的命令。好吧就只能...阅读全文

博文 2015-03-07 21:32:39 jianyingLi

关于go接口的一些说明

什么是接口 接口是golang最重要的特性之一,在Go中,接口interface其实和其他语言的接口意思没什么区别。interface理解其为一种类型的规范或者约定。一种类型是不是“实现”了一个接口呢?就看这种类型是不是实现了接口中定义的所有方法。接⼝是一个或多个方法签名的集合,任何非接口类型只要拥有与之对应的全部方法实现 (包括相同的名称、参数列表以及返回值。),就表示它"实现" 了该接口,无需显式在该类型上添加接口声明。此种方式又被称作Duck Type。 接口的实例化 接口是可被实例化的类型,而不仅仅是语言上的约束规范。当我们创建接口变量时,将会为其分配内存,并将赋值给它的对象拷贝存储。将对象赋值给接口变量时,会发生值拷贝行为。没错,接口内部存储的是指向这个复制品的指针。而且我们无法修...阅读全文

博文 2014-10-04 19:26:23 壬癸甲乙

vgo简明教程(Go语言依赖包管理工具)

前言 vgo是Go语言推出的第三方库管理工具,即将在Go语言新版本中使用。 相信大家都接触过其它语言的第三方库管理工具,比如Java的maven,PHP的composer,Python的pip,Node的npm等。vgo类似于这样的功能,方便Go语言项目管理第三方库。 Go语言官方以前一直没有明确正式的包管理工具,因此导致包管理工具非常混乱,比如dep,glide,govendor,godep等。(虽然dep也是Go语言官方推出的,但是它最终会被放弃。) vgo的推出,是Go语言社区的需要,将解决包管理工具混乱的问题。Go语言官方将使用这个依赖工具为主,所以我们有必要提前了解一下它的使用。 (vgo即英文versioned go的缩写) vendor目录 vendor目录是Go1.5版本后添...阅读全文

博文 2018-06-24 21:34:38 wuyumin

Golang 通过反射的方式调用结构体方法

在Go语言中,反射就是用来检查储存在接口变量内部pair对的一种机制,pair对是以值(value)和实际类型(concrete type)组成.在go中提供两种方法让我们可以轻松地访问接口变量的内容,分别是 reflect.ValueOf()和 reflect.TypeOf() reflect.ValueOf(i interface{} ) 用来获取输入参数接口中的数据的值,如果接口为空则返回0 reflect.TypeOf(i interface{} ) 用来获取输入参数接口中的值的类型,如果接口为空则返回nil var num float64 = 1.2345 fmt.Println("type : " , reflect.TypeOf(num)) //float64 fmt.Prin...阅读全文

博文 2019-05-09 17:49:38 env107

阿里移动技术 Overview,详解阿里云移动云 Apsara Mobile 前世今生

2017杭州云栖大会阿里移动云峰会暨Apsara Mobile品牌发布会上,阿里资深技术专家天施带来《阿里移动技术Overview》的演讲。本文主要对移动十年进行总结,进而回顾了阿里这几年的移动技术变迁,包括Mobile First & Super APP基本原则、技术创新推动组织升级和阿里云移动云Apsara Mobile整个体系介绍和专有云EMAX服务的开启,最后对移动未来进行了展望。 这是目前我们看到的趋势,移动端和PC端不一样,PC端有GPU,相当于一家独大,移动端的GPU干了很多事情,也没有一个非常集中的,移动端和PC端不一样,移动端都在研究一些专用硬件,大家看到华为、苹果很快跳过了GPU阶段,都谈专用AI芯片。华为今天已经把一些能力开放出来给开...阅读全文

主题 2017-11-09 07:59:43 yuun

golang结构体-对象和指针-函数赋予

1、定义一个结构体type User struct { userid int username string password string} 2、初始化一个结构体 有两种情况,一是得到结构体的对象,一是得到结构的对象指针,分别有三种方式: //第1种方式,先声明对象,再初始化 var player1 Player player1.userid = 1 player1.username = "lina1" player1.password = "123456" //第2种方式,声明同时初始化 player2 := Player{2, "lina2", "123456"} //第3种方式,通过 field:value 形式初始化,该方式可以灵活初始化字段的顺序 player3 := Playe...阅读全文

博文 2018-08-15 20:36:41 amu_lucifer

Go依赖管理机制

无论何种语言,依赖管理都是一个比较复杂的问题。而Go语言中的依赖管理机制目前还是让人比较失望的。在1.6版本之前,官方只有把依赖放在GOPATH中,并没有多版本管理机制;1.6版本(1.5版本是experimental feature)引入vendor机制,是包依赖管理对一次重要尝试。他在Go生态系统中依然是一个热门的争论话题,还没有想到完美的解决方案。 看其它 我们先来看看其它语言怎么解决,例举两种典型的管理方式: Java 开发态,可以通过maven和gradle工具编辑依赖清单列表/脚本,指定依赖库的位置/版本等信息,这些可以帮助你在合适的时间将项目固化到一个可随时随地重复编译发布的状态。这些工具对我来说已经足够优雅有效。但maven中也有不同依赖库的内部依赖版本冲突等令人心烦的问题。...阅读全文

博文 2016-11-20 17:00:00 jinpengxx8

golang并发编程实践 -- 简单生产者消费者(with chan)

本文简单介绍如何用golang实现经典的生产者消费者模型。 golang语法简洁,凡可以通过几行代码解决的事情,绝不为了解决该问题而在语言中引入不必要的特性。这个和c++正好相反,c++是个庞大的怪物,我这么形容可能很多c++的fans心里要不舒服了,为了让你在看到诸如子类言论时能够心平气和,建议大家使用一下golang吧。本文不是介绍golang编程语言本身的文章,而是从golang如何让并发编程变得容易...阅读全文

博文 2014-10-04 19:26:04 aura521521

go中方法的接收者是值或者指针有什么区别吗?

参考文章:http://studygolang.com/articles/1113 希望解决的问题如下 假设有两个方法,一个方法的接收者是指针类型,一个方法的接收者是值类型,那么: 对于值类型的变量和指针类型的变量,这两个方法有什么区别? 如果这两个方法是为了实现一个接口,那么这两个方法都可以调用吗? 如果方法是嵌入到其他结构体中的,那么上面两种情况又是怎样的? 值类型的变量和指针类型的变量 先声明一个结构体: type T struct { Name string } func (t T) M1() { t.Name = "name1" } func (t *T) M2() { t.Name = "name2" } M1() 的接收者是值类型 T, M2() 的接收者是值类型 *T , 两...阅读全文

博文 2015-06-17 23:08:13 u013790019

基于图搜索Go建云顶之弈S1版本最强羁绊(完整版)

cover.jpg 本文希望读者玩过云顶之弈,不懂编程的可以直接拉到最下面去看结论,懂编程的希望你了解递归、分治、图、堆这些基本概念,并掌握Python或者Go语言。 代码已公开在github上:https://github.com/weiziyoung/TFT ,转载请注明来源。 今天是11月11日,首先恭喜FPX一顿摧枯拉朽横扫G2, 拿下S赛冠军!证明了LPL是世界第一赛区,也让电竞作为一种赛事在这代人心中铭记。本届S赛结束,也就意味着,S8告一段落,S9即将上线。而云顶之弈作为今年刚出的新模式,在上周11月6日也发布了S2元素崛起版本,一时间各种打法也是层出不穷,小编我也是一名忠实的云顶之弈玩家,但目前还没有玩过S2版本,主要想把这篇文章先写好分享给想读的人。 其实早在今年暑假刚出这...阅读全文

多进程管理工具:goreman

Linux下多进程管理工具对开发和运维都很有用,常见的功能全面的主流工具主要有monit、supervisor。不过开发中使用则推荐轻量级小工具goreman。 goreman是对Ruby下广泛使用的foreman的重写,毕竟基于golang的工具简单易用多了。顺便提一句:goreman的作者是mattn,在golang社区挺活跃的日本的一名程序员。foreman原作者也实现了一个golang版:forego,不过没有goreman好用,举个例子:coreos的etcd就是使用的goreman来一键启停单机版的etcd集群。 安装 go工具安装都非常简单: go get github.com/mattn/goreman goreman help 当然,记得先把GOPATH、GOROOT环境变...阅读全文

PostgreSQL(数据库)资料和分布式系统(Distributed System)资料与Go语言资料整理

《PostgreSQL Documentation》 介绍:PostgreSQL官方文档主页 《PG技术沙龙ppt》 介绍:2013年4月PG技术沙龙PPT 《PG9.3中文翻译文档》 介绍:PG9.3中文翻译文档 谢谢@skykiker提供 《PostgreSQL从菜鸟到专家(中译稿 by 洞庭湖的泥鳅)》 介绍:这篇文档是国内的一线postgreSQL专家所翻译。很经典 《PostgreSQL vs. MS SQL Server》 介绍:PostgreSQL与 MS SQL Server的对比,中文版 《PostgreSQL 30天 培训视频》 介绍:作者德哥@Digoal从事pg截止目前大概有7-8年,长期活跃在国内的pg社区。这套PostgreSQL 30天 培训视频包含了SQL基础...阅读全文

博文 2015-04-28 14:00:13 zhongwen7710

GO语言结构体方法跟结构体指针方法的区别

首先,我定了三个接口、一个结构和三个方法: type DeptModeA interface { Name() string SetName(name string) } type DeptModeB interface { Relocate(building string, floor uint8) } type Dept struct { name string building string floor uint8 Key string } func (self Dept) Name() string { return self.name } func (self Dept) SetName(name string) { self.name = name } func (self *D...阅读全文

博文 2017-01-18 16:00:08 tree2013

Go Mod对比Go Vendor

之前写Go的时候都是直接Deb或者更暴力的Go get来安装依赖包,也是因为那时候为了赶项目直接走最直接的方法,现在有点时间了,来研究一下目前大家常使用的Go包管理器。 今天我们要介绍的两种方式是Go Mod和Go Vendor。 1.Go Mod 1.11版本之后开始能支持的一个包的管理,1.12版本正式GA解决的问题是golang不再依赖gopath的设置,下载下来的包可以直接使用。 1.1 存在问题:对使用者不友好 目前已经更新到1.12版本,但是go mod还是不太友好,使用起来不太方便。 开发的时候还是需要go get提前下载包,然后再应用。 只有要打包的时候执行一套命令,类似于下面这样: go mod init ./ go build main.go 或 go build -mo...阅读全文

博文 2019-03-14 03:34:40 Lateautumn_Lin

第二届Gopher大会即将在北京举行,就等你来

去年我们在上海举行了第一届Gopher大会,那一次大会参会人员在500人左右,会后大家都觉得这是参加过的最实在,最物超所值,干货最多的大会。这里有去年参会的人员写的一些回顾,大家可以体会当时的情形 - http://thinkandcode.info/gopherchina2015can-hui-ji-lu/ - http://fuxiaohei.me/2015/4/29/gopher-china-2015.html - http://life.leanote.com/post/gopher-china-2015-my-golang-way 说了那么多,回到我们今年这一届的大会,因为北京可以说是中国的互联网中心,这里有着大量的Go使用者,而且我去年也答应了很多北京的同学,...阅读全文

golang byte 操作

21天精品区块链课程免费学习,深入实战行家带路,助力开发者轻松玩转区块链! >>> byte数组转int // bytes to int 32 func bytesTo32Int(b []byte) int { buf := bytes.NewBuffer(b) var tmp uint32 binary.Read(buf, binary.BigEndian, &tmp) return int(tmp) } // bytes to int 16 func bytesTo16Int(b []byte) int { buf := bytes.NewBuffer(b) var tmp uint16 binary.Read(buf, binary.BigEndian, &tmp) return in...阅读全文

博文 2018-09-01 14:33:13 Robin3D