go语言20小时从入门到精通(九、异常处理)

##9.1 error接口 Go语言引入了一个关于错误处理的标准模式,即error接口,它是Go语言内建的接口类型,该接口的定义如下: type error interface { Error() string } 复制代码Go语言的标准库代码包errors为用户提供如下方法: package errors type errorString struct { text string } func New(text string) error { return &errorString{text}...阅读全文

掘金 2019年09月17日 小龙不想说话

go语言20小时从入门到精通(三、运算符)

##3.1 算术运算符 ##3.2 关系运算符 ##3.3 逻辑运算符 ##3.4 位运算符 位运算参考 &与:需要两个输入数的同一位都为1时才为1,其余为0 |或:两个输入数的同一位都不为0(即任意一个为1,或都为1)为1,其余为0 ^异或:两个输入数的同一位不同为1,如果相同就设为0 ~取反:对一个操作数的每一位都取反 <<左移:头部一位被丢弃位,尾部一位空位用0填充 >>右移:尾部一位被丢弃,头部一位空位用0填充 ##3.5 赋值运算符 ##3.6 其他运算符 3.7 运算符优先级 在Go...阅读全文

掘金 2019年09月17日 小龙不想说话

go语言20小时从入门到精通(八、 面向对象编程)

##8.1 概述 对于面向对象编程的支持Go 语言设计得非常简洁而优雅。因为, Go语言并没有沿袭传统面向对象编程中的诸多概念,比如继承(不支持继承,尽管匿名字段的内存布局和行为类似继承,但它并不是继承)、虚函数、构造函数和析构函数、隐藏的this指针等。 尽管Go语言中没有封装、继承、多态这些概念,但同样通过别的方式实现这些特性: 封装:通过方法实现 继承:通过匿名字段实现 多态:通过接口实现 ##8.2 匿名组合 ###8.2.1 匿名字段 一般情况下,定义结构体的时候是字段名与其类型一一对...阅读全文

掘金 2019年09月17日 小龙不想说话

go语言20小时从入门到精通(七、复合类型)

##7.1 分类 ##7.2 指针 指针是一个代表着某个内存地址的值。这个内存地址往往是在内存中存储的另一个变量的值的起始位置。Go语言对指针的支持介于Java语言和C/C++语言之间,它既没有想Java语言那样取消了代码对指针的直接操作的能力,也避免了C/C++语言中由于对指针的滥用而造成的安全和可靠性问题。 ###7.2.1 基本操作 Go语言虽然保留了指针,但与其它编程语言不同的是: 默认值 nil,没有 NULL 常量 操作符 "&" 取变量地址, "*" 通过指针访问目标对象 不支持指...阅读全文

掘金 2019年09月17日 小龙不想说话

go语言20小时从入门到精通(六、工程管理)

在实际的开发工作中,直接调用编译器进行编译和链接的场景是少而又少,因为在工程中不会简单到只有一个源代码文件,且源文件之间会有相互的依赖关系。如果这样一个文件一个文件逐步编译,那不亚于一场灾难。 Go语言的设计者作为行业老将,自然不会忽略这一点。早期Go语言使用makefile作为临时方案,到了Go 1发布时引入了强大无比的Go命令行工具。 Go命令行工具的革命性之处在于彻底消除了工程文件的概念,完全用目录结构和包名来推导工程结构和构建顺序。针对只有一个源文件的情况讨论工程管理看起来会比较多余,因...阅读全文

掘金 2019年09月17日 小龙不想说话

野子科技——同时使用Python2和Python3

野子电竞数据官网改版https://www.xxe.io/ 全新登场安装从官网或者Python部落都可以下载Python2.x和Python3.x的版本,注意一下系统就好 将Python2.x和Python3.x安装到不同的文件夹里面。例如,Windows下D:Program FilesPython2和D:Program FilesPython3 将Python2和Python3的安装路径和下一级的Scripts文件夹的路径添加到环境变量里面。解法野路子解法将其中一个运行文件如Python2下的...阅读全文

Segmentfault 2019-09-18 04:02:42 待你幼稚完

Bigfile 用新的方式管理文件,支持 HTTP,RPC 以及 FTP 协议

> github: https://github.com/bigfile/bigfile > > 中文文档:https://learnku.com/docs/bigfile > > 希望社区的朋友们喜欢,欢迎批评和指导 ### 基本介绍 `Bigfile` 是基于 [Golang](<https://golang.google.cn>) 开发的一个文件传输管理系统,支持通过 `HTTP API`,`RPC` 调用以及 `FTP` 客户端管理文件。它构建于许多优秀的开源项目...阅读全文

Go语言中文网 2019-09-17 16:06:25 gamelife1314

go 学习笔记之学习函数式编程前不要忘了函数基础

在编程世界中向来就没有一家独大的编程风格,至少目前还是百家争鸣的春秋战国,除了众所周知的面向对象编程还有日渐流行的函数式编程,当然这也是本系列文章的重点. 越来越多的主流语言在设计的时候几乎无一例外都会参考函数式特性( lambda 表达式,原生支持 map,reduce...),就连面向对象语言的 Java8 也慢慢开始支持函数式编程,所以再不学习函数式编程可能就晚了! 但是在正式学习函数式编程之前,不妨和早已熟悉的面向对象编程心底里做下对比,通过对比学习的方式,相信你一定会收获满满,因此特地...阅读全文

掘金 2019年09月17日 雪之梦技术驿站

牌类游戏使用微服务重构笔记(十二): 在k8s中部署

micro在k8s中部署是相当容易的,本文以项目一、项目二、公共项目为例详解部署方式 helm helm是k8s的软件包管理工具,简单阅读几分钟便可上手使用,具体参见文档链接 配置 键入micro --help你会发现有许多的配置项,这些配置项在开发阶段和上线环境中可能会有不同,例如开发阶段可能没有指定--registry, 那么micro默认使用了mdns进行服务发现,但是线上环境中一般不太会使用这个 好在micro在设计之初就考虑到了这些需求,所以这些配置项都是以插件方式提供的,例如etcd...阅读全文

掘金 2019年09月17日 段鹏举

10分钟将你的Go工程转换为Go Module模式

引言自从在Go 1.11和更高版本中引入了Go的新的依赖管理系统以来,GoLang开发人员已经接受了包版本控制解决方案。这样做的用户可以使用GoCenter存储库中的不可变公共Go 模块,并通过更健壮、更可靠的Go Pipeline获得更快的构建速度。 但是,将现有的项目转换为使用Go Module并不总是很容易,尤其是如果该项目已经尝试过GoLang的其他包管理解决方案时。 为了帮助GoLang社区正确地使用Go Module,我们将使用开源的etcd项目(Kubernetes使用的键值数据存...阅读全文

51CTO博客 2019-09-16 14:22:31 JFrog中国

比特币vs分布式账本vs以太坊vs区块链

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 我们经常被告知,区块链 - 比特币背后的技术 - 不仅将重新布线银行业,还包括社会保障支付,医疗保健甚至数字投票。 到目前为止,这一切都是理论技术行业的讨论。 然而,最近几个月来,来自更广泛的世界的一阵兴趣,以及一些看起来将会形成未来区块链经济的重大事态发展。 最近出现的情况是,中国将使用区块链进行社会保障支付,而澳大利亚则提议使用区块链来运行投票系统。 与此同时,希拉里•克林顿(Hillary Clinton)公开...阅读全文

Segmentfault 2019-09-18 04:02:41 链客

全球比特币和区块链领域创业企业全景图

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 全球比特币和区块链创业企业中,美国的数量占全球55%,其次为英国占6%,新加坡占3%,中国仅占2%! 荷兰的BitFury Group自2012年以来获得了9000万美元投资,日本的数字货币交易所bitFlyer也获得了3600万美元投资,这两家公司成为美国之外融资最多的比特币或区块链创业企业。 在比特币和区块链领域中,美国主要集中在资本市场和金融服务领域的比特币和区块链企业,而英国主要集中在数字货币钱包和汇款服务。...阅读全文

Segmentfault 2019-09-18 04:02:40 链客

ACM Queue 顶级论文:厘清关于区块链、比特币的所有误区

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 当前,对于区块链,大部分人都存在些许在基本认知维度的误区,譬如直接将区块链等同于比特币、所有 ICO 都是骗局等,即使是对技术人而言,都还没搞清楚区块链的代码和算法,更遑论涉及到实际场景应用的实践。日前,国际计算机学会期刊 ACM Queue 发表论文,追本溯源,对比特币及其底层技术 —— 区块链的技术栈进行了系统的梳理和论证,由此发现,比特币的几乎所有技术组成部分都源于 20 世纪 80、90 年代的学术文献,如分...阅读全文

Segmentfault 2019-09-18 04:02:39 链客

区块链分享

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 区块链行业现状政府关注企业极力研究学术取得共识学校和培训机构设立学科资方积极参与争先恐后炒币技术不完善借区块链热点的传销和骗局横行区块链为什么会有如此魅力,让全社会都在关注它?区块链技术是本质是不可篡改的、去中心化的公开账本,是记账方式的进步。记账是社会生产生活的基石,记账方式的进步,能推动社会进步。 记账就是确权财富有各种各样的属性,最主要的属性,就是属于属性,也就是说这个财富是属于谁的。任何财富都有权利属于属性:...阅读全文

Segmentfault 2019-09-18 04:02:38 链客

k8s与dns--coredns的一些实战经验

coredns简介 安装新版本k8s,coredns已经成为默认dns了。之前是kube-dns。coredns是一个灵活,可扩展的DNS服务器,可以作为Kubernetes集群DNS。与Kubernetes一样,CoreDNS项目由CNCF主持。但是在实际使用中,需要一些注意的地方。 增加应用的反亲和性,防止coredns调度到一台主机上 coredns 所需要的资源非常小,所以很容易调度到一台主机上。coredns是一个系统组件,我们应该尽量让coredns分散部署,增强其可用性。故在dep...阅读全文

Segmentfault 2019-09-18 04:02:37 iyacontrol

gnet: 轻量级且高性能的 Golang 网络库

项目主页 github.com/panjf2000/g… 欢迎大家围观~~,目前还在持续更新,感兴趣的话可以 star 一下暗中观察哦。 简介 gnet 是一个基于 Event-Loop 事件驱动的高性能和轻量级网络库。这个库直接使用 epoll 和 kqueue 系统调用而非标准 Golang 网络包:net 来构建网络应用,它的工作原理类似两个开源的网络库:libuv 和 libevent。 这个项目存在的价值是提供一个在网络包处理方面能和 Redis、Haproxy 这两个项目具有相近性能...阅读全文

掘金 2019年09月17日 panjf2000

Go: Finalizers

这篇文章基于 Go-1.12 版本 Go runtime 提供了一种允许开发者将一个函数与一个变量绑定的方法 `runtime.SetFinalizer`,被绑定的变量从它无法被访问时就被垃圾回收器视为待回收状态。这个特性引起了高度的争论,但本文并不打算参与其中,而是去阐述这个方法的具体实现。 ## 无保障性 举一个使用了 Finalizer 的例子 ```go package main import ( "fmt" "math/rand" "runt...阅读全文

Go语言中文网 2019-09-17 00:41:46 Maple24

Go 内存管理之三

之前在 [povilasv.me](https://povilasv.me/) 上,我们一起探讨了 [Go 内存管理](https://studygolang.com/articles/14956) 和 [Go 内存管理之二](https://studygolang.com/articles/22291)。在上篇博文中,我们发现使用 cgo 会占用更多的虚拟内存。现在我们来深入研究一下 cgo。 ## CGO 揭秘 正如之前所见,cgo 会使虚拟内存膨胀。此外,对于大部分用户而言,一...阅读全文

Go语言中文网 2019-09-17 00:38:15 polaris

ORM vs. 非 ORM

我一直很喜欢使用 Go 的 database/sql 包来处理数据库。最近,一些涉及 Gorm 的问题激起了我对 Go 中 `使用 ORM` vs. `直接使用 database/sql` 的好奇心。在 ORM 方面曾有过丰富的经验,所以我决定开始一个实验:利用 Gorm 和 非 ORM 编写同一个简单的应用程序,并比较付诸的努力。 这促使我写下了一些关于 ORM 优缺点的想法。如果您对此感兴趣,请继续阅读! ## 非 ORM vs. ORM 的相关经验 实验中,定义了一个可作...阅读全文

Go语言中文网 2019-09-17 00:30:00 zhoudingding