
go语言
文章平均质量分 71
千年的塔
Go语言和MySQL技术专家,著有《Go语言核心编程》一书。
展开
-
《Go语言核心编程》一书正式上市
背景从2012年开始接触Go,一直很喜欢这门语言,市面上几乎所有的图书我都会购来阅读,但是总是感觉缺少一本讲述Go语言的三大核心:类型系统、接口、并发的图书,这么多年过去了,一直没有人写,最后我决定动手写一本这个主题的图书,书名叫《Go语言核心编程》。经过近1年的准备,图书已经上市,希望喜欢的小伙伴关注和支持。这本书有啥特点不是前篇一律的堆积罗列语法。本书精炼的使用一个章节介绍了Go语言...原创 2018-10-09 15:05:01 · 5227 阅读 · 2 评论 -
Go - 以任意类型的slices作为输入参数
Go - 以任意类型的slices作为输入参数(译)2014-01-16 ThuBy youngsterxyf原文:Go – taking slices of any type as input parameters译者:youngsterxyf最近参与的一个业余项目,go-linq,让我了解到Go语言的类型系统并不是为任何类面向 对象编程而设计的。没有泛型,没有类型继承,也没转载 2016-04-29 14:58:23 · 2079 阅读 · 0 评论 -
go blank identifier _作用
The blank identifier has many possible uses, but its main purpose is to allow discarding returns from functions that have multiple returns:// We only care about the rune and possible error, not its转载 2016-04-15 12:17:08 · 1148 阅读 · 0 评论 -
go语言设计哲学
世界是并行的----先不说宇宙,就整个地球来说,世界万物都是并行发生的;天生对并发支持良好的go语言更容易描述并行的世界;世界是由物质组合构成的---微观世界:由小的粒子组合成大的粒子;宏观世界:由小的物体组合成大的物体;继承只能描述现实世界的一小部分,使用继承是不全面的;go的设计选择的是组合,这个和现实世界比较吻合的设计,表现力更强;世界是标准化的---随着原创 2015-02-09 11:04:14 · 5413 阅读 · 4 评论 -
go Type Identical &Value Assignability & Type Conversions
1. Type identityTwo types are either identical or different.Two named types are identical if their type names originate in the same TypeSpec. A named and an unnamed type are always different. Two翻译 2016-04-26 17:03:45 · 757 阅读 · 0 评论 -
go 类型系统(二)
pre-declared type (预声明类型)golang 默认的有几个预声明类型:boole,num,string type. 这些预声明类型被用来构造其他的类型。type literal(字面量类型)由其他预声明类型组合而成(没有使用type 关键字定义),array,struct,pointer,slice,map,channel,function,interfa原创 2016-04-26 14:43:29 · 1663 阅读 · 0 评论 -
深入源码分析go类型系统
深入源码分析go类型系统 Ø runtime/type.h go类型描述的静态信息//type go类型最通用定义,go的类型系统通过这个数据结构来进行驱动//Type是类型信息结构体中公共的部分 20 struct Type 21 { 22 uintptr size; //类型大小 23 uint32 hash;原创 2016-03-17 17:23:23 · 3676 阅读 · 0 评论 -
Go的内存模型
转自:http://ilovers.sinaapp.com/drupal/article/go%E7%9A%84%E5%86%85%E5%AD%98%E6%A8%A1%E5%9E%8BGolang 官网有一个单独的页面介绍 —— Go的内存模型。me 这里算是将它翻译一下,然后配几个小程序,再加点(个人)说明。me 表示对某些东西也不是太懂,赶脚有些地方有些模糊,甚至有些奇怪。翻译水平有限,不转载 2016-03-16 18:15:15 · 1179 阅读 · 0 评论 -
对于pike 并发在于结构,并行在于执行的思考
并发在于结构,并行在于执行程序:本文所说的程序是指为了完成某个具体任务,而开发的一套软件,其微观动态上可以是(一组进程,多个线程,或者是一组协程执行体)并行就是在任一粒度的时间内都具备同时执行的能力:最简单的并行就是多机,多台机器并行处理;SMP表面上看是并行的,但是由于是共享内存,以及线程间的同步等,不可能完全做到并行;并发是在规定的时间粒度内多个请求都得到执行和处理原创 2015-07-29 11:47:02 · 764 阅读 · 0 评论 -
Go语言如何深度拷贝对象
深度复制可以基于reflect包的反射机制完成, 但是全部重头手写的话会很繁琐.最简单的方式是基于序列化和反序列化来实现对象的深度复制:func deepCopy(dst, src interface{}) error { var buf bytes.Buffer if err := gob.NewEncoder(&buf).Encode(src); err != ni转载 2016-04-29 15:12:02 · 11064 阅读 · 0 评论 -
golang 并发设计模式(二)--管道模式1
本文摘录了许式伟 《Go,基于连接与组合的语言》部分内容,为了便于理解,我在其后端写了个完整的示例程序帮助理解,这篇文章 一是展示go在并行编程中的伟大,也是理解和学习闭包的活的教科书----------------------------------------------------------------------------------------------------转载 2015-03-04 22:33:05 · 4682 阅读 · 0 评论 -
golang-defer坑的本质
本文节选自https://tiancaiamao.gitbooks.io/go-internals/content/zh/03.4.html作者的分析非常透彻,从问题本质分析,就不会对defer产生的副作用产生迷茫。defer坑的本质是:本质原因是return xxx语句并不是一条原子指令,defer被插入到了赋值 与 ret之间,因此可能有机会改变最终的返回值。defer使用时的转载 2017-09-04 13:21:43 · 1358 阅读 · 0 评论 -
go 接口静态与动态校验
go 接口静态与动态校验go 的接口是duck模型,类型不需要显式的声明实现某个接口,只需实现该接口的所有methods,就认为该类型实现该接口。在实际中,大部分接口转换是静态的,发生在编译时刻;go 也支持动态接口转换,转换发生在运行时。比如,需要传递 *os.File 到一个需要io.Reader参数的函数,如果*os.File 没有实现接口io.Reader,则程序在编译期就无法通过原创 2015-01-03 12:13:28 · 1957 阅读 · 0 评论 -
go context专题(三)- context 工作机制和代码分析
go context专题(二)- context 设计思想和用法原创 2017-08-29 20:58:45 · 1195 阅读 · 0 评论 -
go context专题(四)- context 最佳实践和相关争议
context的设计思想context包内Context对象设计的思路不是创建一个对象就直接一杆子到底就传递这个对象针对每个子goroutine可以自己封装Context对象后在逐层朝后传递。为什么这么设计?原因就是不同的goroutine 的需求不一样,传递给子goroutine的可能是:WithCancel WithDeadline WithTimeout WithValu原创 2017-08-31 20:17:30 · 1226 阅读 · 1 评论 -
go context专题(二)- context设计目的和基本数据结构
go context专题(一)- context设计目的和基本数据结构原创 2017-08-29 20:56:48 · 1412 阅读 · 0 评论 -
go context专题(一)- go 并发编程基础设施
go 并发编程基础设施go 对并发的支撑有两个层次,一个是语言的层次上支持,一个是库的层次上支撑。前者go 并发编程的基础,后者是一种基础设施,为一个通用问题提供一个通用的解决方案go 并发语言层次支撑go 并发标准库层次支撑–context标准库本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮原创 2017-08-29 20:14:37 · 797 阅读 · 0 评论 -
go vendor 介绍
go vendor 是go 1.5 官方引入管理包依赖的方式,1.6正式引入其基本思路是,将引用的外部包的源代码放在当前工程的vendor目录下面,go 1.6以后编译go代码会优先从vendor目录先寻找依赖包;1.解决的问题:将源码拷贝到当前工程的vendor目录下,这样打包当前的工程代码到任意机器的$GOPATH/src下都可以通过编译,避免项目代码外部依赖过多,原创 2016-08-04 19:14:25 · 33178 阅读 · 1 评论 -
go reflect 3 rules
1. Reflection goes from interface value to reflection Object.2. Reflection goes from refelction object to interface value.3. To modify a reflection object, the value must be settable.翻译 2014-05-18 17:39:13 · 1413 阅读 · 0 评论 -
Interview with Go’s Russ Cox and Sameer Ajmani
Interview with Go’s Russ Cox and Sameer AjmaniPosted on March 25, 2015 by Michael HicksIn this post I interview Russ Cox and Sameer Ajmani, who work at Google on the Goprogramming la转载 2015-04-14 11:00:29 · 1207 阅读 · 0 评论 -
go flag 包解析命令行参数
参考:转载 2014-08-19 11:48:45 · 3093 阅读 · 0 评论 -
Go Concurrency Patterns: Timing out, moving on
Go Concurrency Patterns: Timing out, moving on23 September 2010Concurrent programming has its own idioms. A good example is timeouts. Although Go's channels do not support them directly, they are转载 2014-08-03 12:53:09 · 1014 阅读 · 0 评论 -
Go's power is in emergent behavior
Go's power is in emergent behaviorI just got back from Gophercon and had a great time. This was the first Go language conference ever. It was a single track of speakers and 700 people packed int翻译 2014-06-05 13:23:58 · 1060 阅读 · 0 评论 -
Go's Package Name Space
Go's PackageName SpacePosted onTuesday, February 2, 2010. Go organizes programs into individualpieces called packages. A package gets to pick a short name for itself,like vector, even if the impor翻译 2014-04-24 11:54:40 · 1139 阅读 · 0 评论 -
go 语言type Method Values vs. Method Expressions
go 语言的type 类型方法定义如下:原创 2014-04-23 10:07:58 · 1479 阅读 · 0 评论 -
最有价值的编程忠告(来自贝尔实验室Plan 9操作系统的创始人Rob Pike)
Rob Pike,目前谷歌公司最著名的软件工程师之一,曾是贝尔实验室Unix开发团队成员,Plan9操作系统开发的主要领导人,Inferno操作系统开发的主要领导人。他是缔造Go语言和Limbo语言的核心人物。下面是他分享给大家他在贝尔实验室工作的一段经历,这段经历改变了他对bug调试的思想认识。Job的主要工作经历:我在贝尔实验室工作了很多年。我在计算机科学研究中心,你会很诧异,转载 2014-03-12 16:34:11 · 1331 阅读 · 0 评论 -
linux下Mercurial Hg的配置方法
这个工具在国内很少人使用,所以中文资料匮乏.只有官方的website上有一些少得可怜的中文资料了.不过总体上来说,hg还是比较好用的。这里绍一下hg服务器的配置。关于hg在基本用法参见mercrial的官方网站。在做以下操作时,请到 http://www.selenic.com/mercurial/ 下 载安装hg.1.建立用户hgrepo其它用户将用这个账户用hg服务器p转载 2012-10-15 11:19:45 · 4932 阅读 · 0 评论 -
go语言学习资源
go语言学习资料整理1.官网http://golang.org/ 有的电信运营商防火墙过不去,中国程序员的悲哀。http://tour.golang.org/#1http://golang.org/doc/2.国内几个博客:http://www.biz366.com/golang-book/preface.htmlhttp://www.cnb原创 2012-10-15 10:50:59 · 1451 阅读 · 0 评论 -
CentOS下go 语言开发环境源码安装
go 语言源码安装依赖 ,gcc ,make glibc库,等,上述工具安装省略,另外,其源代码更新采用的是mercurial 工具,安装前先安装mercureal :1.mercurial安装使用yum install mercurial2.设置环境变量在.bash_profile中#go setexport GOROOT=/usr/local/goexport原创 2012-10-12 14:00:29 · 7998 阅读 · 0 评论 -
My favourate things about golang
在twitter 上有人讨论原创 2014-09-05 10:07:36 · 1188 阅读 · 0 评论 -
Object-Oriented Design in Go
Composition, embedding and interfaces provide powerful tools for Object-Oriented Design in Go.组合,嵌入,接口翻译 2014-09-06 19:44:20 · 620 阅读 · 0 评论 -
Function Types as Interface Values
go语言函数签名和函数类型函数签名:输入和输入参数类型和顺序构成函数签名,与函数名无关;定义函数类型时使用的是匿名函数模式:typeFuncType func(xxx)xxx,函数类型关注的是函数签名;只要一个函数的函数签名和某个函数类型一致,该函数就可以强制转换为该函数类型的一个变量;翻译 2015-01-06 14:59:41 · 627 阅读 · 0 评论 -
Error Handling In Go, Part I
Error Handling In Go, Part IIntroduction转自:http://www.goinggo.net/2014/10/error-handling-in-go-part-i.htmlIt is idiomatic in Go to use the error interface type as the return type for转载 2015-01-22 14:39:47 · 1105 阅读 · 0 评论 -
Error Handling In Go, Part II
Error Handling In Go, Part IIIntroductionIn part I of this post, we learned about the error interface and how the standard library provides support for creating error interface values vi转载 2015-01-22 14:29:09 · 1364 阅读 · 0 评论 -
浅谈编程语言的类型系统
浅谈编程语言的类型系统转自http://blog.youkuaiyun.com/ce123_zhouwei/article/details/8976652类型系统(type system)是一门编程语言最核心也是最基础的部分。无论该语言基于何种编程范式,都必须在开天辟地之初首先对类型系统作出明确的定义。这是因为,编程语言虽然五花八门,千奇百怪,但是归根结底,编程语言最终的目标,本质上无非是转载 2015-01-03 10:53:47 · 2636 阅读 · 0 评论 -
go reflect TypeOf 与ValueOf
学习go的反射对于理解go的底层实现以及接口机制有着非常重要的价值;本篇文章从一个源程序来体验一下go反射的两个核心函数TypeOf 和ValueOf的使用方法,特别体验下怎么根据type构造type实例的办法。package mainimport ( "fmt" "reflect")type Speaker interface { Speak()string原创 2015-01-02 22:48:57 · 7565 阅读 · 0 评论 -
Go编码规范指南
转自http://golanghome.com/post/550Go编码规范指南序言看过很多方面的编码规范,可能每一家公司都有不同的规范,这份编码规范是写给我自己的,同时希望我们公司内部同事也能遵循这个规范来写Go代码。如果你的代码没有办法找到下面的规范,那么就遵循标准库的规范,多阅读标准库的源码,标准库的代码可以说是我们写代码参考的标杆。格式化规范转载 2014-12-14 22:45:08 · 4037 阅读 · 1 评论 -
Go语言-闭包
转载http://blog.sina.com.cn/s/blog_487109d101018fcx.html 略做加工在找“闭包”的资料时找到这个:http://www.cnblogs.com/Jifangliang/archive/2008/08/05/1260602.html这里解说得很清楚明了,例子也很间单。闭包是“函数”和“引用环境”组成的整体。在这里用Go重写一下他的转载 2015-01-04 17:55:41 · 5958 阅读 · 0 评论 -
译:go’s block and identifiers scope
翻译自go语言语法规范,对go语言标识符的可见域和代码块结构进行阐述,清晰,易懂。翻译 2014-08-16 13:07:25 · 1415 阅读 · 0 评论 -
Error handling and Go go 优雅的错误处理
IntroductionIf you have written any Go code you have probably encountered the built-in error type. Go code uses error values to indicate an abnormal state. For example, the os.Openfunction ret转载 2014-09-10 18:36:44 · 1318 阅读 · 0 评论