2020
10-08
10-08
GO语言 复合类型专题
对于一般的语言使用者来说,20%的语言特性就能够满足80%的使用需求,剩下在使用中掌握。基于这一理论,Go基础系列的文章不会刻意追求面面俱到,但该有知识点都会覆盖,目的是带你快跑赶上Golang这趟新车。Hurryup,Let'sgo!前面我们学习过Golang中基础数据类型,比如内置类型intstringbool等,其实还有一些复杂一点点,但很好用的复合类型,类似C中的数组和struct、C++中的map,今天我们就来学习Go中的复...
继续阅读 >
最近在工作中碰到了GC的问题:项目中大量重复地创建许多对象,造成GC的工作量巨大,CPU频繁掉底。准备使用sync.Pool来缓存对象,减轻GC的消耗。为了用起来更顺畅,我特地研究了一番,形成此文。本文从使用到源码解析,循序渐进,一一道来。是什么sync.Pool是sync包下的一个组件,可以作为保存临时取还对象的一个“池子”。个人觉得它的名字有一定的误导性,因为Pool里装的对象可以被无通知地被回收,可能sync.Cache...
曾几何时,这是很多Gopher在Go1.8、Go1.9时猜测是否存在的那个版本,毕竟minorversion即将进化到两位数。从Go语言第一封设计mail发出到现在的十年间,尤其是Go语言经历了近几年的爆发式增长,基本奠定了云原生第一语言的位置之后,人们对Go语言有了更多新的、更为深刻的认知,同时对这门编程语言也有了更多的改进和优化的期望。Go2在Gopher心中的位置日益提升,直到RussCox在GopherCon2017上公布了Gocoreteam对...
译者注:本文主要介绍使用Go语言与Ethereum智能合约进行交互。以下为译文尽管最近出现了麻烦,但Ethereum仍然是区块链空间中实现智能合约最重要的系统,而且这种情况似乎不太可能很快改变。在我看来,技术本身具有很大的潜力,从学术的角度来看是非常有趣的,但正如前面提到的问题,之前展示出来了很多问题,区块链技术,智能合约,特别是带有Solidity的Ethereum生态系统是非常不成熟的,而且也没有准备好的黄金时段/...
序言错误和异常是两个不同的概念,非常容易混淆。很多程序员习惯将一切非正常情况都看做错误,而不区分错误和异常,即使程序中可能有异常抛出,也将异常及时捕获并转换成错误。从表面上看,一切皆错误的思路更简单,而异常的引入仅仅增加了额外的复杂度。但事实并非如此。众所周知,Golang遵循“少即是多”的设计哲学,追求简洁优雅,就是说如果异常价值不大,就不会将异常加入到语言特性中。错误和异常处理是程序...