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

golang 内置函数new() 和struct{} 初始化的区别

new() 这是一个用来分配内存的内置函数,它的第一个参数是一个类型,不是一个值,它的返回值是一个指向新分配的 t 类型的零值的指针。 在golang的代码定义如下: func new(t Type) *Type strut{} 直接使用struct{} 来初始化strut时,返回的是一个struct类型的值,而不是指针两者是不一样的 两者对比代码如下: type Student struct{ id int name string } func main(){ var s_1 *Student = new(Student) s_1.id = 100 s_1.name = "cat" var s_2 Student = Student{id:1,name:"tom"} fmt.Println...阅读全文

博文 2015-06-17 20:03:41 happinessaflower

超赞的GO语言设计模式和成例集锦

来自:http://geek.csdn.net/news/detail/100051 Go语言从面世就受到了业界的普遍关注,曾有文章分析,Go是最有可能改变未来IT技术的十大语言之一。本文作者列举了Go语言的设计模式和成例合集,并且还进行了详细的分类。 创建型模式 抽象工厂模式:提供一个接口用于创建相关对象的家族;Builder模式:使用简单的对象来构建复杂的对象;工厂方法模式:一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中;对象池模式:实例化并维护一组相同类型的对象实例;单例模式:限制类的实例,保证一个类只有一个实例。 结构模式 适配器模式:适配另一个不兼容的接口来一起工作;桥接模式:将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立...阅读全文

博文 2016-09-08 06:00:09 Blues1021

beego框架之orm模块

参考beego原文:http://beego.me/docs/mvc/model/orm.md#main.go beego ORM 是一个强大的 Go 语言 ORM 框架,orm模块主要是处理MVC中的M(models)。 首先以bee工具创建一工程名为:beegoorm,修改的文件为 beegoorm/main.go 和 beegoorm/models/models.go(仅2个文件) beegoorm/models/models.go package models import ( "github.com/astaxie/beego/orm" ) type User struct { Id int Name string Profile *Profile `orm:"rel(one)"`...阅读全文

博文 2015-07-01 03:00:00 hezhixiong

Go语言slice的那些坑

Go语言Google开发的适用于多核编程的语言。我感觉它像是C语言的现代版本,简单,并发支持友好,部署轻松。GO语言中保留关键字就只有25个,这也足以说明它的学习成本并不高。 然而,Go语言里面slice这个东西并不简单。初学者容易掉入坑中。此文件就试图把slice给讲解清楚。 下面先讲一下slice的一些基本特性。 1. slice内部有三个变量,分别是:ptr, len, cap ptr是用来存储数据的数组 cap是ptr数组的长度 len是实际数组的长度 2. 如何在初始化的时候,指定slice的长度? a := make([]int, 10) 这里make的时候,第2个参数,就是这个slice的长度。 这个时候它的capacity是多少呢? fmt.Println(cap(a)) 这...阅读全文

博文 2016-03-31 19:00:05 zhanchenxing

Go语言设计模式实践:迭代器(Iterator)

关于本系列 决定开个新坑。 这个系列首先是关于Go语言实践的。在项目中实际使用Go语言也有段时间了,一个体会就是不论是官方文档、图书还是网络资料,关于Go语言惯用法(idiom)的介绍都比较少,基本只能靠看标准库源代码自己琢磨,所以我特别想在这方面有一些收集和总结。 然后这个系列也是关于设计模式的。虽然Go语言不是一门面向对象编程语言,但是很多面向对象设计模式所要解决的问题是在程序设计中客观存在的。不管用什么语言,总是要面对和解决这些问题的,只是解决的思路和途径会有所不同。所以我想就以经典的设计模式作为切入点来展开这个系列,毕竟大家对设计模式都很熟悉了,可以避免无中生有想出一些蹩脚的应用场景。 本系列的具体主题会比较灵活,计划主要包括这些方面的话题: Go语言惯用法。 设计模式的实现。特别是...阅读全文

博文 2014-10-31 03:00:01 newgame

热烈庆祝数据宝平台上线一周年:月销售额超300万元首创佳绩,大数据行业首战告捷

2016年8月8日,数据宝网站上线仪式暨大数据双创平台发布会在国家级新区,贵安新区隆重举行,贵州省委常委、常务副省长秦如培发表重要讲话,宣告着数据宝平台的正式上线运营。 数据宝在这一年里创下月销售额超300万,接入15个部委央企一手权威数据、推出6个拳头应用场景产品,得到近1000多位政府领导莅临指导以及建立一支专业技能高、研发能力强的500人专业团队的骄人业绩。 2017年8月8日的今天,是数据宝平台上线一周年的日子,这匹大数据行业的最大黑马,一年间的发展历程是怎样的,又给行业递交了一份怎样的成绩单? 出身不凡:近1000多位领导干部参观指导 大境界才能有大胸怀,大格局才大有作为。“首个省部共建的大数据资产运营平台”是数据宝的slogan,也是数据宝平台的格局定位。...阅读全文

GopherChina2019(北京)大会视频大全

GopherChina2019(北京)大会视频大全 Day1 1、基于 Go 语言的大规模微服务框架设计 2、如何用Go打造高性能路径规划和ETA引擎 3、TiDB 的 Golang 实践 4、How to write testable code 5、Go 业务基础库之 Error & Context 6、Go 同步和并发设计模式 7、百度 APP Go语言实践 8、用Golang搭建实时音视频云 Tutormeet Day2 1、基于MINIO的对象存储方案在探探的实践 2、从零开始用GO实现Lexer & Parser 3、高性能高可用开发框架TarsGo的腾讯实践 4、BTC的小额支付解决方案--闪电网络 5、Go Modules in everyday life 6、用GO构建高性能...阅读全文

博文 2019-06-19 18:02:43 如来神掌

李南江:让天下没有缺钱学习的年轻人!【程序员自学福利】

李南江,网名极客江南,知播渔创始人(知播渔教育科技有限公司),不仅仅是名师,更是一个对开发技术甚为执着的程序员,对移动Web开发和Golang开发有着独到的见解和深入的研究,有着多年的前后端开发及教学经验, 对NativeApp、HybridApp、WebApp、区块链开发有着深入研究和独到的见解。除此之外,李老师专业知识夯实广博,授课风格幽默风趣,善于结合实例教学,受到众多学员的喜爱。 李南江,毕业于计算机科学与技术专业(211硕士),在校期间就潜心研究各种开发技术,大学没毕业的时候创办了德亿3G工作室,并与知名日企达成战略联盟,开发了多款海内外的热门应用,如IPCamera、云浏览器、智能公交、移动办公等。毕业之际受邀国内知名的软件开发公司担任技术总监一职,迎接更大挑战。担任技术总监的期...阅读全文

玩转Golang之Struct结构体

先介绍一下go语言的类型系统 Golang中的类型系统 类型系统是指一个语言的类型体系结构。一个典型的类型系统通常包含如下基本内容:  基础类型,如byte、int、bool、float等;  复合类型,如数组、结构体、指针等;  可以指向任意对象的类型(Any类型);  值语义和引用语义;  面向对象,即所有具备面向对象特征(比如成员方法)的类型;  接口。 Go语言中的大多数类型都是值语义,并且都可以包含对应的操作方法。在需要的时候,你可以给任何类型(包括内置类型)“增加”新方法。而在实现某个接口时,无需从 该接口继承(事实上,Go语言根本就不支持面向对象思想中的继承语法),只需要实现该接口 要求的所有方法即可。任何类型都可以被Any类型引用。Any类型就是空接口,即inte...阅读全文

博文 2018-08-11 23:35:04 夏海社长

[分享]Gopher China 上海大会上的PPT

Gopher China 上海大会上的PPT [GO语言并发编程实践 by 周洋@360手机助手](http://airjd.com/view/i93qyhcy000h5ri) [Go语言在NFV场景下的应用研究 by 汪洋@华为](http://airjd.com/view/i93rjkj300009rd) [Go在猎豹移动的应用 by 毛剑](http://airjd.com/view/i93y6ubj000f9mf) [Golang与高性能DSP竞价系统](http://airjd.com/view/i93ybt65000g7pe) [用golang写一个操作系统](http://airjd.com/view/i93y5mbb000i1ga) [P2...阅读全文

瓜子二手车招聘Golang研发工程师

有意者可联系 caojia at guazi.com 岗位职责: 负责瓜子后端系统业务的设计和研发; 负责用户产品的设计和研发; 负责Web应用的优化和架构升级; 负责业务的快速迭代与实施,具有快速解决问题的能力. 任职要求: 3年以上Web开发经验,,精通PHP编程,有出色的组织能力及协调能力,对研发流程有基本的实践; 有一定的数据库规划能力,熟悉各种WEB缓存技术,精通MySQL,对Memcache、Redis有精深的了解; 掌握基础的HTML、JS、CSS等前端技术; 具备良好的编程习惯,熟练掌握OOP编程和常见设计模式; 具备团队开发经验,熟练掌握SVN、Git等常见工具的使用; 责任心强,思维活跃,个性开朗...阅读全文

腾讯 Angel 1.0 正式版发布,机器学习高性能计算平台

在去年 12 月 18 日的腾讯大数据技术峰会暨 KDD China 技术峰会上,腾讯大数据宣布推出了面向机器学习的「第三代高性能计算平台」——Angel,并表示将于 2017 年开放其源代码。现在,2017 年已经大约过去了一半, Angel 1.0 正式版发布了。 ![](https://raw.githubusercontent.com/Tencent/angel/master/assets/angel_logo.png) Angel 1.0.0 新特性: 1. ParameterServer 功能 - 基于 Matrix/Vector 的模型自动切分和管理,兼顾稀疏和稠密两种格式 - 支持对 Model 进行 Push 和 Pull 操作,可以自定义复杂...阅读全文

自学前端开发,一个网站,就够了!

李南江,网名极客江南,知播渔创始人(知播渔教育科技有限公司),不仅仅是名师,更是一个对开发技术甚为执着的程序员,对移动Web开发和Golang开发有着独到的见解和深入的研究,有着多年的前后端开发及教学经验, 对NativeApp、HybridApp、WebApp、区块链开发有着深入研究和独到的见解。除此之外,李老师专业知识夯实广博,授课风格幽默风趣,善于结合实例教学,受到众多学员的喜爱。 知播渔官网学习免费注册地址:https://www.it666.com/sales?fid=218 李南江,毕业于计算机科学与技术专业(211硕士),在校期间就潜心研究各种开发技术,大学没毕业的时候创办了德亿3G工作室,并与知名日企达成战略联盟,开发了多款海内外的热门应用,如IPCamera、云浏览器、智能...阅读全文

Go语言内幕(6):启动和内存分配初始化

本文由 伯乐在线 - yhx 翻译,黄利民 校稿。未经许可,禁止转载!英文出处:Siarhei Matsiukevich。欢迎加入翻译组。 《Go语言内幕(1):主要概念与项目结构》 《Go语言内幕(2):深入 Go 编译器》 《Go语言内幕(3):链接器、链接器、重定位》 《Go语言内幕(4):目标文件和函数元数据》 《Go语言内幕(5):运行时启动过程》 本文是 Golang 内部机制探索系列博客的后续。这个系列博客的目的是探索 Go 启动过程,这个过程也是理解 Go 运行时(runtime)的关键之处。本文中我们将一起去看看启动过程的第二个部分,分析参数是怎么被初始化的及其中有哪些函数调用等等。 启动顺序 我们从上次结束的地方继续。在 runtime.r0_to 函数中,我们还有一部分...阅读全文

博文 2016-06-01 14:49:26 伯乐在线

golang make()内置函数

内建函数 make 用来为 slice,map 或 chan 类型分配内存和初始化一个对象(注意:只能用在这三种类型上),跟 new 类似,第一个参数也是一个类型而不是一个值,跟 new 不同的是,make 返回类型的引用而不是指针,而返回值也依赖于具体传入的类型 make()函数在golang的代码如下: func make(t Type,size IntegerType) Type 使用make来创建slice,map,chanel说明如下: slice: var slice_ []int = make([]int,5,10) fmt.Println(slice_) var slice_1 []int = make([]int,5) fmt.Println(slice_1) var s...阅读全文

博文 2015-06-17 20:03:47 happinessaflower

go语言设计哲学

世界是并行的----先不说宇宙,就整个地球来说,世界万物都是并行发生的;天生对并发支持良好的go语言更容易描述并行的世界; 世界是由物质组合构成的---微观世界:由小的粒子组合成大的粒子;宏观世界:由小的物体组合成大的物体; 继承只能描述现实世界的一小部分,使用继承是不全面的;go的设计选择的是组合,这个和现实世界比较吻合的设计,表现力更强; 世界是标准化的---随着生产力的发展,社会分工越来与详细,越来越多行业有了国际标准,任何一个国家的、任何一个公司只要按照这个标准生产器件,就能装配到一台机器上;IBM/PC就是硬件模块化和接口化一个最成功的例证; 软件也可如此,go的接口是duck模型,面向接口编程,而不需要显示的声明,将语言能做的事情交给语言做; 正交性--几何上的正交指的是两个向量...阅读全文

博文 2015-04-30 20:30:29 hittata

[北京]Golang游戏服务器工程师

北京钛核互动信息技术有限公司成立于2014年11月,创始人团队都是来自于Glu Mobile, Gameloft等顶尖手游公司。在游戏行业打拼了10年以上,擅长高品质精品游戏开发。开发过大量精品手机游戏、Console游戏和网游。公司坚信以人为本,以顶级的人才需要顶级的回报为目标,营造一个有激情的宽松的游戏开发环境,希望能够让游戏人才能够发挥自己的热情和潜力。 http://www.tuicool.com/articles/uEfEJf 服务器将会使用弹性云自动伸缩架构,在这里你将能够学习并开发具有国际最先进的云架构游戏服务器方案。我们招聘具有创新精神的工程师,敢创新、思维严谨、勇于承担。 **基本能力要求:** 1. 热爱玩游戏,热爱开发游戏。具备足够的游戏常识;...阅读全文

Go的变量到底在堆还是栈中分配

Go的变量到底在堆还是栈中分配 2015-10-22 最近试着优化掉一些小对象分配,发现一个很诡异的问题:这段代码会在堆上分配对象! package main import ( "fmt" ) func main() { var a [1]int c := a[:] fmt.Println(c) } 看汇编代码 go tool compile -S test.golang "".main t=1 size=336 value=0 args=0x0 locals=0x98 0x0000 00000 (test.go:7) TEXT "".main(SB), $152-0 0x0000 00000 (test.go:7) MOVQ (TLS), CX 0x0009 00009 (test.go:...阅读全文

博文 2016-07-20 13:27:37 zenlife

一个月的golang服务器开发感触

好快,一个月过去了,感觉自己学得少,也感觉自己有点质的飞跃。以前用的openresty,怎么说,也很有价值,高并发,负载均衡,在某种小游戏上是可以一试的,其实我很有想法的,,,但是用来做游戏对开发这来说,太没得发展前途了,,,毕竟我觉得,起码得会很多重要的编程思想,设计模式比较好,毕竟不是产品发展方向,,,对于golang这一个月,感觉发现了新大陆一样的,了解了rpc,kcp,真正体会到了高内聚和低耦合的意义,明白了,数据库并不是那么刚需的,体会到了golang真的是天生为了解决分布式,微服务,高内聚低耦合而诞生的,还有一帮兢兢业业的大佬,心里由衷的敬畏,他们真的是程序员的样子,而不是混日子,做一天和尚,敲一天钟。希望自己不忘初心,有高追求,努力奋斗。可以用openresty做路由,gola...阅读全文

设计模式(golang)

设计模式的六大原则 摘自 Java开发中的23种设计模式详解 1、开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。 所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后 面的具体设计中我们会提到这点。 2、里氏代换原则(Liskov Substitution Principle) 里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。 里氏代换原则中说,任何 基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受 到...阅读全文

博文 2017-02-15 15:20:20 Cbping

Golang写的问答APP自动答题助手

### 项目地址: ### https://github.com/henson/Answer ### https://gitee.com/henson/Answer ### 欢迎试用,顺便给个星,谢谢! [![Travis Status for henson/Answer](https://travis-ci.org/henson/Answer.svg?branch=master)](https://travis-ci.org/henson/Answer) [![Go Report Card](https://goreportcard.com/badge/github.com/henson/Answer)](https://goreportcard.com/report/...阅读全文

golang学习之struct

结构体定义的一般方式如下: type identifier struct { field1 type1 field2 type2 ... } type T struct {a, b int} 也是合法的语法,它更适用于简单的结构体。 var t *T t = new(T) 变量 t 是一个指向 T的指针,此时结构体字段的值是它们所属类型的零值,使用 new 函数给一个新的结构体变量分配内存,它返回指向已分配内存的指针。 无论变量是一个结构体类型还是一个结构体类型指针,都使用同样的 选择器符(selector-notation) 来引用结构体的字段,即: type myStruct struct { i int } var v myStruct // v是结构体类型变量 var p *mySt...阅读全文

博文 2016-06-15 09:00:00 caiya928

【广州】移动互联网公司欢迎Go程序员

我们是一家移动互联网公司,有稳定投资方和成熟的商业模式。 要求: 1. 从事Golang开发1年以上 2. 精通Golang,熟悉Go设计模式,有生产环境下大量使用goroutine的经验优先 3. 精通*nix网络编程,具备良好的编码规范 4. 熟悉分布式软件系统架构 5. 思维活跃,乐于沟通,有开源项目经验者优先 我们期待您的加入! 网址:http://www.shangnatao.com Email: tech@shangnatao.com Jason QQ: 5692500...阅读全文

阿里敏捷教练何勉:论精益思想及精益产品开发实践体系

导读:精益求精是工匠精神实现的最佳方法,通过引入实践精益思想的原则和方法进行精益产品开发,打造对客户最好的产品进行交付,其次通过精益思想的理念降低企业的运营成本,提高企业的运营效率。阿里资深解决方案架构师、畅销书《精益产品开发:原则、方法与实施》作者何勉,全面分享精益思想的来龙去脉和应用及精益产品开发的实践体系。干货长文,请耐心阅读,文末有福利哦~精益思想的定义让我们从精益思想讲起。先给精益思想做一个定义,这个定义来自wikipedia,它最终其实还是引自《精益思想》这本书。它的定义是“精益思想是关于如何有效组织人类活动的一个新的思维方法,它的目标是消除浪费,更多地交付对个人和社会有用的价值”。消除浪费是一个方面,增加价值是另外一个方面。当然我们也可以说,消除浪费是手段,而增加价值才是最终的...阅读全文

博文 2018-03-07 14:38:54 jewel0516

Go语言并发的设计模式和应用场景

生成器 在Python中我们可以使用yield关键字来让一个函数成为生成器,在Go中我们可以使用信道来制造生成器(一种lazy load类似的东西)。 当然我们的信道并不是简单的做阻塞主线的功能来使用的哦。 下面是一个制作自增整数生成器的例子,直到主线向信道索要数据,我们才添加数据到信道: func xrange() chan int{ // xrange用来生成自增的整数 var ch chan int = make(chan int) go func() { // 开出一个goroutine for i := 0; ; i++ { ch <- i // 直到信道索要数据,才把i添加进信道 } }() return ch } func main() { generator := xrang...阅读全文

博文 2017-01-10 02:00:01 四明狂客

go内存管理和垃圾收集简介

go语言的内存分两部分,一部分用作堆,供内存分配用,另一部分是bitmap,用来管理堆。两部分从同一地址开始,向高地址方向增长的是内存池,向低地址方向增长的是bitmap。 ##内存分配## 对于较大的内存申请,直接从堆上申请,释放时也直接返回给堆。 而当一个go routine申请小于32k字节的内存,则从go routine私有的内存池中分配内存。因为是私有的,所有在多数情况下,分配内存不需要上锁。如果私有内存池没有内存了,则需要向中心内存池申请内存,中心内存池是共享数据,此时需要上锁。如果中心内存池也没有内存了,则从堆里申请内存。 私有内存池和中心内存池里的内存都是按照大小分开管理的,这样,分配和释放内存都非常快,而且也不容易产生碎片。通常,中心内存池从堆上申请...阅读全文

Golang分布式设计模式之-----分层设计

提到分布式系统,我们会想到很多机器,分别部署着各自的服务,然后整体组成一个分布式系统。在这类系统中,分布式系统与常规的集中式系统存在着以下三个区别。(来自分布式算法导论) 1、缺乏全局状态知识 2、缺乏全局时间帧 3、非确定性 这三大特点也成为分布式系统设计的难点。也正是如此,分布式系统的设计比常规的集中式系统要难的多。为了区别,我们称这种分布式系统为,群体分布式。这种犹如社会群体。 golang语言天生具有分布式的特点,其主要是基于协程与chan的概念。如果对golang不了解的人可以简单的去看看golang语言。 有了golang语言,我们的可执行程序,也可以设计成分布式。一个可执行程序设计成分布式,这种分布式我们成为单体分布式。这种犹如,个体,存在着很多的部件。 其与群体分布式的区别在...阅读全文

博文 2014-10-09 21:00:09 screscent

继续招募go的爱好者,组建强大go团队

公司:创业团队,拿到千万级别的天使投资,方向是O2O,具体领域涉及到商业模式,在这里不细说了,总之是一个还没有巨头的大市场,非常看好。 坐标:上海,长寿路上,靠近7号地铁线。 环境:办公环境高大上,开发人员配备rmbp,再加一个28寸4k显示器 待遇:因人而异,可以谈,半年后可根据表现给予原始股激励。 准备用Go来做后端,采用微服务架构体系,欢迎喜欢Go的兄弟联系我...阅读全文

golang中new和make区别

golang 中有两个内存分配机制 :new和make,二者有明显区别. new:用来初始化一个对象,并且返回该对象的首地址.其自身是一个指针.可用于初始化任何类型 make:返回一个初始化的实例,返回的是一个实例,而不是指针,其只能用来初始化:slice,map和channel三种类型 package main import ( "fmt" ) func main() { a := new([]int) fmt.Println(a) //输出&[],a本身是一个地址 b := make([]int, 1) fmt.Println(b) //输出[0],b本身是一个slice对象,其内容默认为0 } 通过这个例子可以看出,当对slice,map以及channel进行初始化时,使用make比n...阅读全文

golang select 选择器的两种方案

golang select 选择器 常规模式: package main import ( "fmt" "strconv" ) func main() { var chs1 = make(chan int) var chs2 = make(chan float64) var chs3 = make(chan string) var ch4close = make(chan int) defer close(ch4close) go func(c chan int, ch4close chan int) { for i := 0; i < 5; i++ { c <- i } close(c) ch4close <- 1 }(chs1, ch4close) go func(c chan floa...阅读全文

博文 2014-10-04 19:26:08 eclipser1987

继续招聘Go的后端开发人员

公司:创业团队,公司已注册,拿到千万级别的天使投资,方向是O2O,具体领域涉及到商业模式,在这里不细说了,总之是一个还没有巨头的大市场,非常看好。 坐标:上海,长寿路上,靠近7号地铁线,5A级写字楼。 环境:办公环境不错,为每个开发人员配备全新rmbp + 28寸4K显示器 待遇:1.2万-2万,如果的确有料,还可以再谈,半年后根据实际贡献和能力,甚至可以提供股权。 准备用Go来做后端,采用微服务架构体系,欢迎真心喜欢Go的兄弟联系我...阅读全文

GO语言简单工厂模式

简单工厂模式的特点是工厂可以根据条件产生不同功能的类,从而达到提高程序代码的可复用性。 package main import ( "fmt" ) type Operater interface { //运算接口 Operate(int, int) int } type AddOperate struct { //加法运算类,实现了运算接口 } func (this *AddOperate)Operate(rhs int, lhs int) int { return rhs + lhs } type SubOperate struct { //减法运算类,实现了运算接口 } func (this *SubOperate)Operate(rhs int, lhs int) int { retu...阅读全文

博文 2015-09-23 18:00:01 wenjianming

golang设计模式的一些看法

golang设计模式的一些看法 对于c、c++来讲,设计的对象存在着这几个问题 1、 对象是死的,只有自己的属性,行为(函数)。没有可以自己独立执行的机制 2、 对象是存活的,有自己的属性,行为(函数),还有独立执行的活动(自己独立的线程)。但由于系统的限制,这种对象数量不能过多(线程数量不能太多)。 3、 对象是半存活的,有自己的属性,行为,没有独立的执行活动(没有自己独立的线程)。需要借助于其他对象的线程调度。 以上是c、c++语言的一些限制。其他语言不是熟悉,不进行评判。但大多数也是类似的。 那么对于golang语言来讲,设计的对象可以是 存活的,每个对象,有自己的属性,有自己的行为,也有自己的活动(通过协程来实现)。那么这样来讲,golang就可以实现对对象的完整模拟实现。就犹如我们...阅读全文

博文 2014-12-17 13:00:01 screscent

Golang设计模式—简单工厂模式(Simple Factory Pattern)

Golang设计模式——简单工厂模式 背景 假设我们在做一款小型翻译软件,软件可以将德语、英语、日语都翻译成目标中文,并显示在前端。 思路 我们会有三个具体的语言翻译结构体,或许以后还有更多,但现在分别是GermanTranslater、EnglishTranslater、JapaneseTranslater,他们都共同实现了一个接口Translator。 //翻译接口 type Translator interface { Translate(string) string } //德语翻译类 type GermanTranslator struct{} func (*GermanTranslator) Translate(words string) string { return "德语"...阅读全文

博文 2019-03-29 23:35:41 SpiderShrimp2

大话设计模式(golang) 七、模版方法模式

模式特点:通过吧不变的行为搬到父类,去除子类中的重复代码。 程序实例:考试时使用同一种考卷(父类),不同学生上交自己填写的试卷(子类方法的实现) package main import ( "fmt" ) type TestPaper struct { child interface{} } func (t *TestPaper) testQuestion1() { fmt.Println("杨过得到,后来给了郭靖,练成倚天剑、屠龙刀的玄铁可能是[] a.球磨铸铁 b.马口铁 c.高速合金钥 d.碳素纤维") fmt.Println("答案:", t.child.(Answers).answer1()) } func (t *TestPaper) testQuestion2() { fmt....阅读全文

博文 2016-08-04 20:00:12 平凡之路

Go语言内存分配器的实现

前几天断断续续的写了3篇关于Go语言内存分配器的文章,分别是Go语言内存分配器设计、Go语言内存分配器-FixAlloc、Go语言内存分配器-MSpan,这3篇主要是本文的前戏,其实所有的内容本可以在一篇里写完的,但内容实在太多了,没精力一口气搞定。本文将把整个内存分配器的架构以及核心组件给详细的介绍一下,当然亲自对照着翻看一下代码才是王道。 内存布局结构图 我把整个核心代码的逻辑给抽象绘制出了这个内存布局图,它基本展示了Go语言内存分配器的整体结构以及部分细节(这结构图应该同样适用于tcmalloc)。从此结构图来看,内存分配器还是有一点小复杂的,但根据具体的逻辑层次可以拆成三个大模块——cache,central,heap,然后一个一个的模块分析下去,逻辑就显得特别清晰明了了。位于结构图...阅读全文

博文 2014-11-13 21:58:15 skoo

go语言实现设计模式(一):策略模式

策略模式定义了算法家族,在调用算法家族的时候不感知算法的变化,客户也不会受到影响。 下面用《大话设计模式》中的一个实例进行改写。 例:超市中经常进行促销活动,促销活动的促销方法就是一个个策略,如“满一百减20”,“打八折”等。现在实现策略模式,用CashContext生产策略,并完成策略的调用。 1.首先定义所有策略的接口。 package cash type cashSuper interface { AcceptMoney(money float64) float64 } 2.定义三个子类,实现此接口 package cash //普通情况,没有折扣 type cashNormal struct { } func newCashNormal() cashNormal { instance...阅读全文

博文 2015-10-31 23:00:01 yzh900927

go 语言学习历程

接触go是2012年的时候,真正开始系统的学习和开发系统是2014年了,go语言的学习也算自己2014年的重要工作之一,对go语言学习的总结,也算是年底总结之一 1.学习go的原因和动机: 1>先前做过2年Unix c开发经验, 对于C系的语言有特殊的感情,go特别适合我胃口,用过后爱不释手; 2>go语言团队太过耀眼和强大:Thompson 图灵奖获得者,unix 和C的共同发明人;Pike PLAN9操作系统的主要开发者、UTF-8发明者;Robert Griesemer 参与java的HotSpot, js v8引擎开发者; 3>国内传道者的极力推荐:许式伟兄,谢孟军兄等强力推荐及相关书籍问世; 2.学习资料: 书籍是:老许的《go语言编程》、 老谢的《go web编程》、 雨痕的《g...阅读全文

博文 2015-07-14 00:00:02 sunnyql

go 语言学习历程

接触go是2012年的时候,真正开始系统的学习和开发系统是2014年了,go语言的学习也算自己2014年的重要工作之一,对go语言学习的总结,也算是年底总结之一 1.学习go的原因和动机: 1>先前做过2年Unix c开发经验, 对于C系的语言有特殊的感情,go特别适合我胃口,用过后爱不释手; 2>go语言团队太过耀眼和强大:Thompson 图灵奖获得者,unix 和C的共同发明人;Pike PLAN9操作系统的主要开发者、UTF-8发明者;Robert Griesemer 参与java的HotSpot, js v8引擎开发者; 3>国内传道者的极力推荐:许式伟兄,谢孟军兄等强力推荐及相关书籍问世; 2.学习资料: 书籍是:老许的《go语言编程》、 老谢的《go web编程》、 雨痕的《g...阅读全文

博文 2015-01-08 10:00:01 一曲忧伤

go语言中var

go语言中定义变量使用关键字var,如:var x int=4 也可以写成x:=4; 在函数中,:= 简洁赋值语句在明确类型的地方,可以用于替代 var 定义。 (:= 结构不能使用在函数外,函数外的每个语法块都必须以关键字开始。) package main import ( "fmt" ) func main() { var x int = 4 fmt.Println(x)//输出4 fmt.Println(&x)//输出指针 //fmt.Println(*x) //错误 y := 4 fmt.Println(y)//输出4 fmt.Println(&y)//输出指针 //fmt.Println(*y) //错误 var v *int = new(int)//返回值为指针 fmt.Prin...阅读全文

上海/广州-继续招个GO(还是上次的公司,之前在这已经招到一个了,感谢贵宝地)

Go工程师(上海) 职责范围: 1. 负责应用于高并发环境下的服务器端应用程序开发。 2. 服务运维及接口开发(Go语言为主) 岗位要求: 1. 扎实的 golang 语言基础。 2. 具备良好的代码编写习惯、良好的代码结构组织能力,同时可以维护开发文档。 3. 熟悉 TDD 模式、DevOps 模式。 4. 熟悉 MySQL、MongoDB 、Redis 等存储方案。 5. 熟悉 Linux 环境。 6. 能够自我驱动,热爱技术,有强烈的上进心,善于探索和钻研 加分项: 1. 可熟练使用 Mac 2. 使用 Git 作为版本控制工具。 3. 精通C/C/+/+或 Python语言,熟悉常用的设计模式者优先 4. 有云计算、云存储,Paas平台或者其他分布式项目...阅读全文

大话机器学习(一)--Go for it!

本系列教程适合对机器学习一无所知,甚至文科森哦。反正不会有数学公式,I promise!教程基于sklearn的python机器学习库。 打开机器学习的面纱,就是这样。 首先要有利器。工欲善其事必先利其器。看我下面这个文章吧,下载一下这个软件,然后我们就可以开始了。 http://blog.csdn.net/qtlyx/article/details/49742483 1.什么是机器学习? 数据挖掘,深度学习,模式识别,大数据挖掘。一切听起来很深奥的样子。其实呢,就是一句话:分类和预测!说的那么好听就是在做这两件事。 2.线性回归 马上开始!有一种东西叫做最小二乘法,不知道也没有关系。  话说有这样一张图,上面有这么多点点是已知的,现在问题来了,告诉你横轴的值是0.56的点,纵轴的值应该是...阅读全文

博文 2016-02-23 15:00:03 qtlyx

go 语言学习历程

接触go是2012年的时候,真正开始系统的学习和开发系统是2014年了,go语言的学习也算自己2014年的重要工作之一,对go语言学习的总结,也算是年底总结之一 1.学习go的原因和动机: 1>先前做过2年Unix c开发经验, 对于C系的语言有特殊的感情,go特别适合我胃口,用过后爱不释手; 2>go语言团队太过耀眼和强大:Thompson 图灵奖获得者,unix 和C的共同发明人;Pike PLAN9操作系统的主要开发者、UTF-8发明者;Robert Griesemer 参与java的HotSpot, js v8引擎开发者; 3>国内传道者的极力推荐:许式伟兄,谢孟军兄等强力推荐及相关书籍问世; 2.学习资料: 书籍是:老许的《go语言编程》、 老谢的《go web编程》、 雨痕的《g...阅读全文

博文 2015-01-04 13:00:05 hittata

Go语言内存分配器设计

Go语言的整个内存管理子系统主要由两部分组成——内存分配器和垃圾收集器(gc)。十一小长假期为了避开我泱泱大国的人流高峰,于是在家宅了3天把Go语言的内存分配器部分的代码给研究了一番,总的来说还是非常酷的,自己也学到了不少的东西,就此记录分享一下。整个内存分配器完全是基于Google自家的tcmalloc的设计重新实现了一遍,因此,想看看Go语言的内存分配器实现的话,强烈建议先读一读tcmalloc的介绍文档,然后看看Go runtime的malloc.h源码文件的注释介绍,这样基本就大概了解Go语言内存分配器的设计了。 Go的内存分配器主要也是解决小对象的分配管理和多线程的内存分配问题。(后面提到的内存分配器都是指代的Go语言实现的内存分配器)。内存分配器以32k作为对象大小的定夺标准,小...阅读全文

博文 2014-11-12 17:25:06 skoo

【腾讯云】招Golang!30K-60K!

高级后台开发工程师(golang)工作职责: 1.本科及以上学历,计算机相关专业; 2.负责云小程序云开发产品的后台开发; 3.负责开发平台业务的开发和维护; 负责部门相关业务的后台开发及维护。工作要求: 1.Unix/Linux下 Golang的开发经验; 2.熟悉Unix/Linux操作系统原理、常用工具; 3.全面并且扎实的软件知识结构(操作系统、软件工程、设计模式、数据结构、数据库系统、网络安全); 4.具备良好的分析解决问题能力,能独立承担任务和有系统进度把控能力; 5.好学、责任心强、思维缜密敏捷、良好的对外沟通和团队协作能力; 6.有海量系统开发经验优先考虑。团队:小程序云开发(给小程序开发者提供一套云的开发者语言)具体请戳: Wechat:13723737494Email:S...阅读全文

谷歌的alpha go 战胜李世石与谷歌双足行走机器人

更早一段时间,谷歌旗下的机器人公司完成了双足机器人的直立行走。 昨天的对战,人工智能战胜了人类。 两年前,在技术背景的人们看来,以上两件事儿迟早会发生,只是不确定会是什么时间、什么地点。 而今天这样的事情已经成为事实。 从人类历史的宏观视角去体察,我认为今年是人工智能的新纪元,也是谷歌的新纪元,全球科技公司的新纪元。 从微观的国际形势去体察,这是谷歌的机器人、人工智能在全球范围内一骑绝尘,遥遥领先的标志。 率先掌握了下一代生产工具、战争工具。 《士兵突击》里面有一句台词,战争最终是人与人的对抗,而今后对方就是站在人工智能身后的人。 国内去年的创业如火如荼,基本是商业模式的创新,现有技术的重新整合。 但即使是也鲜有在这样的基础领域持续投入、产生突破的。 《三体》里面有一段对话,我觉得很有道理。...阅读全文

【夸克实验室】招 Golang 工程师一名

------------ **工作职责:** - 负责金融和量化产品的底层系统开发 - 独立设计开发服务器端主要逻辑系统,协助改进服务器架构 **职位要求:** - 计算机相关专业本科及以上学历,1年以上golang开发相关工作经验,或其他类C/C++语言相关经验 - 熟悉常用数据结构 - 熟悉golang内存管理和设计思想 - 熟悉golang网络开发,有RPC,WebSocket经验者更佳 - 熟悉golang并发开发思想 - 优秀的算法理解和实现能力,较强的问题解决能力(BUG和性能调试) - 具有团队合作精神,优秀的沟通能力及目标职责 - 金融或量化方向的优先 **薪资范围:** 15k-20k,上不封顶 ------...阅读全文

golang redis的模式订阅

c := redisPool.Get() psc := redis.PubSubConn{c} psc.PSubscribe("aa*") for { switch v := psc.Receive().(type) { case redis.Subscription: fmt.Printf("%s: %s %d\n", v.Channel, v.Kind, v.Count) case redis.Message://单个订阅subscribe fmt.Printf("%s: message: %s\n", v.Channel, v.Data) case redis.PMessage://模式订阅psubscribe fmt.Printf("PMessage: %s %s %s\n", v....阅读全文

博文 2015-12-01 03:00:00 liughost

准备建设Go开发团队,欢迎喜欢Go的兄弟加入

公司:创业团队,公司已注册,拿到千万级别的天使投资,方向是O2O,具体领域涉及到商业模式,在这里不细说了,总之是一个还没有巨头的大市场,非常看好。 坐标:上海,长寿路上,靠近7号地铁线。 环境:办公环境高大上,开发人员配备rmbp,再加一个27寸显示器 待遇:1.5万,如果的确有料,还可以再谈,半年后可根据表现给予期权等激励。 准备用Go来做后端,采用微服务架构体系,欢迎喜欢Go的兄弟联系我...阅读全文

Go语言数据结构

当向一个新程序员解释Go语言时,我发现如果解释Go的数据是如何在内存中表示的,将有助于建立编写高效程序的良好直觉。 转载地址:http://www.open-open.com/lib/view/open1390373069882.html 基础类型 让我们从一些简单的例子开始: 变量i是int类型,在内存中占用一个32位的存储单位。(上图拿32位系统来举例;对以上的例子,只有指针才会在64位的机器上占用更多的空间——int始终是32位——然而我们仍然可以选择64位的系统。) 变量j是int32类型,因为它经过了显式的类型转化。尽管i和j有着同样的内存布局,但它们的类型是不一样的:像这样的赋值i = j会产生类型异常,必须通过显式的类型转换:i = int(j) 。 变量f是个浮点类型,上例中...阅读全文

博文 2015-04-09 11:00:01 Decadent_2014