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

go get安装第三方包的前提条件和步骤

自:http://studygolang.com/articles/5796 首先,你要找到第三方类包所在的网址, 例如: http://github.com/go-sql-driver/mysql 分为命令行自动安装 和 手动下载 然后安装。 ( 欢迎加入go语言群: 218160862 ,群内有实践) 一、通过 go get github.com/go-sql-driver/mysql 命令安装第三方类库 要启用 go get github.com/go-sql-driver/mysql 命令, 首先必须设置环境变量GOPATH的路径、并且安装git for windows!!! 否则 go get 命令不起作用。 1. 设置 GOPATH 环境变量, 并且这个GOPATH 变量里面的路...阅读全文

博文 2016-01-28 19:00:01 bluehawksky

golang实现接口类和多态的一种做法

package main import "fmt" type IMessage interface { Print() } type BaseMessage struct { msg string } func (message *BaseMessage) Print() { fmt.Println("baseMessage:msg", message.msg) } type SubMessage struct { BaseMessage } func (message *SubMessage) Print() { fmt.Println("subMessage:msg", message.msg) } func interface_use(i IMessage) { i.Print() }...阅读全文

博文 2015-04-14 11:00:00 miros

golang技术随笔(一)深入理解interface

Go语言的主要设计者之一罗布·派克( Rob Pike)曾经说过,如果只能选择一个Go语言的特 性移植到其他语言中,他会选择接口。可见接口在golang中的地位,及其对gloang这门语言所带来的活力。 golang中的interface是什么 接口相当于是一份契约,它规定了一个对象所能提供的一组操作。要理解golang中接口的概念我们最好还是先来看看别的现代语言是如何实现接口的。 C++没有提供interface这样的关键字,它通过纯虚基类实现接口,而java则通过interface关键字声明接口。它们有个共同特征就是一个类要实现该接口必须进行显示的声明,如下是java方式: interface IFoo { void Bar(); } class Foo implements IFoo ...阅读全文

博文 2015-01-26 20:00:02 justaipanda

Golang把所有包括底层类库,输出到stderr的内容, 重新定向到一个日志文件里面?

不论应用是如何部署的,我们都期望能扑捉到应用的错误日志, 解决思路: 自己写代码处理异常拦截,甚至直接在main函数中写异常拦截。 stderr重定向到某个文件里 使用 syscall.Dup2 第一种方法比较简单, 我们这里主要看后两种: 使用 stderr替换的代码: package main import ( "fmt" "os" ) func main() { f, _ := os.OpenFile("C:\\tmp\\11.txt", os.O_WRONLY|os.O_CREATE|os.O_SYNC, 0755) os.Stdout = f os.Stderr = f fmt.Println("fmt") fmt.Print(make(map[int]int)[0]) } 这里的...阅读全文

博文 2015-02-07 03:00:01 ghj1976

Golang 读写 Excel

Excelize 是 Golang 编写的一个用来操作 Office Excel 文档类库,基于微软的 Office OpenXML 标准。可以使用它来读取、写入 XLSX 文件。相比较其他的开源类库,Excelize 支持写入原本带有图片(表)的文档,还支持向 Excel 中插入图片,并且在保存后不会丢失图表样式。 安装 go get github.com/Luxurioust/excelize 创建 XLSX package main import ( "fmt" "os" "github.com/Luxurioust/excelize" ) func main() { xlsx := excelize.CreateFile() // Create a new sheet. xlsx.N...阅读全文

博文 2017-05-09 09:01:02 续日

Go语言面向对象编程

前段时间接触Go语言,感觉有很多新的理念,今天先转载一篇文章,以后有时间再慢慢学习。 本文转载自图灵社区http://www.ituring.com.cn/article/details/1339 作者许式伟 面向对象编程 Go 语言的面向对象编程(OOP)非常简洁而优雅。说它简洁,简介之处在于,它没有了OOP中很多概念,比如:继承、虚函数、构造函数和析构函数、隐藏的this指针等等。说它优雅,是它的面向对象(OOP)是语言类型系统(type system)中的天然的一部分。整个类型系统通过接口(interface)串联,浑然一体。 类型系统(type system) 很少有编程类的书籍谈及类型系统(type system)这个话题。但实际上类型系统是整个语言的支撑,至关重要。 类型系统(t...阅读全文

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

更优雅的 Golang 错误处理

Golang 中的错误处理是一个被大家经常拿出来讨论的话题(另外一个是泛型)。其中泛型这个问题,rsc 在最近的计划中也提出了纳入他今年的考虑计划中,同时,泛型的提案在2016年也进行了一些更新,相信未来会有一些更好的方案提出。这个文章我们讨论一下如何在现行的 Golang 框架下提供更友好和优雅的错误处理。 从现状谈起 Golang 中的错误处理原则,开发者曾经之前专门发布了几篇文章( Error handling and Go 和 Defer, Panic, and Recover、Errors are values )介绍。分别介绍了 Golang 中处理一般预知到的错误与遇到崩溃时的错误处理机制。 一般情况下,我们还是以官方博客中的错误处理例子为例: func main() { f,...阅读全文

博文 2017-02-10 07:42:04 kevin

基于 Golang 的 xls 读取类库:xls

Golang 编写的 xls 读取类库,能够实现 xls 表格的读取功能 func (w *WorkBook) ReadAllCells() (res [][]string) { for _, sheet := range w.Sheets { w.PrepareSheet(sheet) if sheet.MaxRow != 0 { temp := make([][]string, sheet.MaxRow+1) for k, row := range sheet.Rows { data := make([]string, 0) if len(row.Cols) > 0 { for _, col := range row.Cols { if uint16(len(data)) <= col....阅读全文

博文 2015-10-24 03:00:00 zhuiluoyu

Go 语言读写 Excel 文档

https://raw.githubusercontent.com/Luxurioust/excelize/master/excelize.png Excelize 是 Golang 编写的一个用来操作 Office Excel 文档类库,基于微软的 Office OpenXML 标准。可以使用它来读取、写入 XLSX 文件。相比较其他的开源类库,Excelize 支持写入原本带有图片(表)的文档,还支持向 Excel 中插入图片,并且在保存后不会丢失图表样式。 项目主页 github.com/Luxurioust/excelize 安装 go get github.com/Luxurioust/excelize 创建 XLSX package main import ( "fmt" "os...阅读全文

博文 2017-05-15 02:40:39 xurime

自制JVM -- 用GO语言实现JVM

虽然写了很多年的Java代码,但是基本上只把JVM当blackbox处理。介绍JVM的书也看过几本,但效果不佳。看OpenJDK代码?提不起兴趣。最近有几个礼拜的空闲时间,于是我决定用GO语言写了一个JVM,彻底征服JVM这头怪兽! 为什么选择GO 首先不想用动态语言来写。实现JVM的初衷就是想离机器更近一点,所以排除了JavaScript、Python、Ruby等语言。其次也不想用Java来写,原因基本同上。还有一个原因是自己对Java太熟悉了,用它来写,没挑战性。再次也不想用C/C++,原因是自己不喜欢这两个语言。C过于底层,C++过于复杂。所以最终选择了GO。 GO是Google发布的语言,编译型,接近底层,一定程度上可以充当系统语言来使用。GO的语法很简洁,学习曲线平滑,文档也比较详...阅读全文

博文 2015-02-09 13:00:01 SpiderDog

golang--零下线时间式重启

在Hacker News看到用Go达到Zero-downtime restarts,意思大概为零下线时间式重启,很早就知道nginx可以轻松做到平滑重启,一直都想用go来实现这样的功能。看了一下它的代码实现,所以有了这篇博文。 项目名字叫goagain,地址在:https://github.com/rcrowley/goagain。该项目是一个类库,也就是package,在go开发的程序中添加这个package就可以轻松地重启程序。 goagain会监控2个系统信号,一个为SIGTERM,接收到这个信号,程序就停止运行。另一个信号为SIGUSR2,接收到这个信号的行为是,当前进程,也就是父进程会新建一个子进程,然后把父进程的pid保存到一个名为GOAGAIN_PPID的环境变量;子进程启动的...阅读全文

博文 2014-10-04 19:26:11 getong

go get安装第三方包的前提条件和步骤

首先,你要找到第三方类包所在的网址, 例如: http://github.com/go-sql-driver/mysql分为命令行自动安装 和 手动下载 然后安装。 ( 欢迎加入go语言群: 218160862 ,群内有实践) 一、通过 go get github.com/go-sql-driver/mysql 命令安装第三方类库 要启用 go get github.com/go-sql-driver/mysql 命令, 首先必须设置环境变量GOPATH的路径、并且安装git for windows!!! 否则 go get 命令不起作用。1. 设置 GOPATH 环境变量, 并且这个GOPATH 变量里面的路径不能有分号; 否则会报错右键我的电脑——高级系统设置——环境变量,系统变量下 点...阅读全文

博文 2016-01-22 03:00:01 wangqishu

[golang note] 匿名组合

匿名组合 golang也提供了继承机制,但采用组合的文法,因此称为匿名组合。与其他语言不同, golang很清晰地展示出类的内存布局是怎样的。 • 非指针方式组合 ▶ 基本语法 // 基类 type Base struct { // 成员变量 } func (b *Base) 函数名(参数列表) (返回值列表) { // 函数体 } // 派生类 type Derived struct { Base // 成员变量 } func (b *Derived) 函数名(参数列表) (返回值列表) { // 函数体 } ▶ 继承规则 √ 在派生类没有改写基类的成员方法时,相应的成员方法被继承。 √ 派生类可以直接调用基类的成员方法,譬如基类有个成员方法为Base.Func(),那么Derived.F...阅读全文

博文 2016-03-10 09:00:01 heartchord

Go语言中Interface的理念

Go语言中Interface淡化了面向对象中接口应具有的象征意义,接口在Go语言中仅仅只是“表现形式”上相同的一类事物的抽象概念。在Go语言中只要是具有相同“表现形式”的“类型”都具有相同的Interface,而不需要考虑这个Interface在具体的使用中应具有的实际意义。这样的话,就把Interface的成本交给使用者了,而不是交给设计者。 设计者只负责设计method,也就是Interface的构成元素,Interface在具体的使用中应该有的实际意义都是交给Interface的使用者去确定。举个最简单的例子: 跑假设有两种意思:一种是逃跑,英文叫escape;另一种是跑步,英文叫run。如果中文就一种,把他叫做pao。 type BadMan struct{ } func (badM...阅读全文

博文 2015-01-22 16:00:04 chanshimudingxi

Go语言日趋成熟 运行速度接近C语言实现程序

Go将动态语言易于编写的特性和静态语言的高效性相结合,具备良好的易用性和极佳的执行效率。Go语言最初定位于网络服务器、存储系统和数据库的程序设计,同时在语言中包含并发构造体,以方便的帮助开发者创建并行任务。 Go语言具有效率极高的编译器,目前Go编译器能在Linux、FreeBSD以及Mac OS X平台下运行,但暂时没有对Windows环境提供编译支持。Go开发团队曾在博客中表示,编译完成的Go程序运行速度接近C语言实现的程序。 在今年五月份举办的Google I/O大会上,Go语言背后的工程师Rob Pike和Russ Cox两人一同为开发者带来了Go语言编程讲座,解释Go语言的灵活设计和独到之处。Go语言的主要设计者Rob Pike是Google公司的资深工程师,在分布式系统、程序语言...阅读全文

博文 2014-10-10 14:00:00 middle544291353

[译] CockroachDB GC优化总结

几周前我们分享了一个帖子讲述我们为什么选择Go语言编写CockroachDB,我们收到一些问题,询问我们是如何解决Go语言的一些已知问题,特别是关于性能、GC和死锁的问题。 本文中我们将分享几个非常有用的优化技巧用以改善许多常见的GC性能问题(接下来还将覆盖一些有趣的死锁问题)。我们将重点分享如何通过嵌套结构体、使用 sync.Pool、和复用后端数组减少内存分配和降低GC开销。 减少内存分配和GC优化 将Go与其他语言(比如java)区别开来的是Go语言能让你管理内存布局。通过GO语言,你可以合并碎片,而其他垃圾集合语言不能。 让我们看看CockroachDB中从磁盘读取数据并解码的一小段代码: metaKey := mvccEncodeMetaKey(key) var meta MVCC...阅读全文

博文 2015-11-26 17:22:53 Coldstar

golang直接调用ffmpeg预编译类库(windows)

MinGW介绍 MINGW(Minimalist GNU on Windows)是一个可以在windows下编译Linux程序的仿真linux编译环境,他提供了linux下的C、C++头文件、系统库和一些linux下的编译工具集合,例如gcc、g++和make工具。使得编译出来的二进制可以在windows上运行。(此前的 cygwin 虽然也是 GNU 的 Windows 移植,但是 cygwin 是有版权的,不是 GNU) MinGW下载 【MinGW】 http://sourceforge.NET/projects/mingw/ 【MinGW环境变量配置】 http://jingyan.baidu.com/article/6b97984da0bd8a1ca2b0bf90.html 下载最...阅读全文

博文 2016-11-27 15:00:04 yang8023tao

令人激动的微服务2.0技术栈

作者|Christian 编辑|禚娴静 当下市场瞬息万变,新技术不断涌现,而微服务持续火热。如果说2014年是微服务的元年,那么2015年和2016年则是微服务走下神坛的时刻,越来越多的开发者、架构师们探讨着如何落地,如何解决各种实际问题,而很多技术栈和工具也纷纷涌现。构建微服务时,我们真的深深进入了分析分布式系统 - 一个已经研究了40年以上的技术主题,复杂的自适应系统理论已经深入人心有很长的时间。从技术的角度来看,我们需要解决的事情如下:部署交付API版本控制合同缩放/自动缩放服务发现负载均衡路由/自适应路由健康检查配置熔断器bulk-headsTTL / deadlining延迟跟踪服务因果跟踪分布式日志度量操作与收集Netflix和一些互联网公司作为早期微服务的采用者在这些领域做了很...阅读全文

博文 2017-03-14 11:05:54 Christian

go实现排序的链表

链表的数据结构比较线性数组,优点是 可以方便的对任意的位置进行插入和删除。 这一特性使得它很适合于应用在排序等场景下,由于golang目前类库还不是很完善,在java中可以很简单的使用api提供的支持完成对list或者map的排序,在使用go时就没有那么幸运了,可能需要自己去实现。 下面的例子就是使用go package 中的LinkedList实现的排序的链表。 有几个功能特性: 1.支持固定的长度 2.可自定义排序的规则 3.组合LinkedList功能 package codeforfun import ( "container/list" ) type SortedLinkedList struct { *list.List Limit int compareFunc func (o...阅读全文

博文 2014-10-04 19:26:24 mahang

go sync.Mutex 设计思想与演化过程 (一)

go语言在云计算时代将会如日中天,还抱着.NET不放的人将会被淘汰。学习go语言和.NET完全不一样,它有非常简单的runtime 和 类库。最好的办法就是将整个源代码读一遍,这是我见过最简洁的系统类库。读了之后,你会真正体会到C#的面向对象的表达方式是有问题的,继承并不是必要的东西。相同的问题,在go中有更加简单的表达。 go runtime 没有提供任何的锁,只是提供了一个PV操作原语。独占锁,条件锁 都是基于这个原语实现的。如果你学习了go,那就就知道如何在windows下高效的方式实现条件锁定(windows没有自带的条件锁)。 我想阅读源代码,不能仅仅只看到实现了什么,还要看到作者的设计思路,还有如果你作为作者,如何实现。这些才是真正有用的东西,知识永远学不完,我们要锻炼我们的思维...阅读全文

博文 2014-10-04 19:26:24 niniwzw

阿里巴巴CDN平台急招Go程序猿

阿里巴巴-基础架构事业群-CDN平台研发工程师 岗位描述: 阿里云是国内最知名的云计算公司,CDN业务是阿里云的重要业务之一,拥有分布广泛的国内和海外节点,并在国内外都能提供高质量的CDN主流服务和增值服务。我们面临着世界级的流量带来的技术挑战,我们立志为客户提供最便捷、最快速的CDN服务。通过我们的努力为用户最大程度的实现商业价值。 1、负责CDN平台产品业务后端功能研发。 2、负责CDN平台自动化工具相关工作的设计及研发。 3、负责CDN平台产品架构优化,解决CDN产品服务效率问题。 岗位要求: 1、了解CDN加速技术,熟悉DNS、HTTP协议。 2、具有两年年以上开发经验,熟练Go,Python,Java其中一种语言高级特性和...阅读全文

jvm.go -- 设计和实现

jvm.go jvm.go是一个完全用Go语言实现的JVM,关于这个项目的发起原因和简单介绍可以看这篇文章。 最新进展和下一步计划 jvm.go的开发已经进行了一个半月了,除了HelloWorld和一些简单的Java代码以外,JUnit也可以正常运行了。下一步的计划是在jvm.go上把Jetty跑起来。下面介绍一下jvm.go的一些关键部分的设计和实现。 目录结构 jvmgo jvm的go语言实现 cmdline 这个包用来解析java命令行参数classfile 这个包把[]byte转化成ClassFile结构classpath 这个包实现了class文件查找native rt.jar里的本地方法实现jvm jvm核心功能 instructions 指令集rtda 运行时数据区(Runti...阅读全文

博文 2015-03-07 19:00:01 SpiderDog

GoLang这个语言就语言本身而言,其实不怎么样

学习了一个礼拜的Go语言,感觉GoLang特别好用,有点爱不释手的感觉。但是只讨论语言本身,这个语言本身其实挺垃圾的,赶不上Java 8,语法糖太少,跟Scala那就更没有什么可比性了,但是Scala的编译太糟糕,语法因为太强大,反而搞得有些复杂,一段时间不用就忘了。 就语言本身而言,我最喜欢Scala,太强大了,可以自己造语法糖,想怎么写就怎么写。但是作为开发工具而言,我很喜欢大GoLang,什么都可以干,还可以随意和C互动,类库也足够多,简直就是无敌,一个字,赞...阅读全文

说说c, c++ 和 go

今天接触到了Go语言, 请原谅我现在才接触到Go, 之前听云风大神说起过, 但我总把它和易语言混淆了, 导致我没有更早的了解到这个语言. 就在一年多前, 那个时候的我还是对C++无比的热爱, 认为c++是做后台服务器的不二选择. 那个时候总认为c 跟 c++是一家的, 所以我总爱标榜自己为c/c++程序员. C++虽然完全兼容了C(这是优点, 也是C++致命的缺陷), 但是C++跟C的设计思想可以说是很不一样的, 具体说起来可以参见云风关于C++和C的一些讨论. 对C++的认识随着自己做聚能推项目不断加深, 我了解几乎所有c++的特性, 但说实在的, 我能用上的特性真的不多. 我也试图研究那些神一般的模板元编程, 但我实在是研究不下去, 因为我觉得这么复杂的的实现, 只是为了那么一点点的效率...阅读全文

博文 2014-10-04 19:26:53 winkyao

GO 语言五步让你成为高手

 这里是GO程序员的五个进化阶段: 第一个阶段(菜逼): 刚刚学习了这门语言。 已经通过一些教程或者培训班了解基本的语法,可以写短的代码片段。 第二个阶段 (探索者): 可以写一个完整的程序,但不懂一些更高级的语言特征,比如“channels”。还没有使用GO写一个大项目。 第三个阶段(大手): 你能熟练的使用Go, 能够用GO去解决,生产环境中一个具体和完整的问题。已经形成了一套自己的惯用法和常用代码库。在你的编码方案中Go是一个非常好用的工具。 第四阶段 (大神): 绝逼清楚Go语言的设计选择和背后的动机。能理解的简洁和可组合性哲学。 布道师: 积极地与他人分享关于Go语言知识和你对Go语言的理解。在各种合适的场所发出自己的声音, 参与邮件列表、建立QQ群、做专题报告。成为一个布道者不...阅读全文

博文 2016-09-07 03:00:47 yueguanyun

再次验证golang与node.js的http模块性能对比测试

之前看过性能对比测试的文章,是关于node.js和golang的http模块,简单的helloworld功能,原文在此: http://www.cnblogs.com/QLeelulu/archive/2012/08/12/2635261.html#2447171 再此文章之后,node.js和golang都升级了,node.js现在已经到了0.10,而golang也到了1.1版本,因此突然想在前人的基础上再做一次性能测试。 具体代码仍然沿用引用文章里面的。 硬件:双cpu,型号为xeon E5620 2.40GHz,为4核cpu,因为支持超线程,所以系统显示逻辑cpu数为16个。 软件环境:centos6.0 。 node.js版本为0.8.15,没有使用现在最新的0.10.13 . go...阅读全文

博文 2014-10-04 19:27:03 dijin

评: 为什么我不喜欢Go语言式的接口

最近在Go语言的QQ群里看到关于图灵社区有牛人老赵吐槽许式伟《Go语言编程》的各种争论. 我之前也看了老赵吐槽许式伟《Go语言编程》的文章, 当时想老赵如果能将许大书中不足部分补充完善了也是一个好事情. 因此, 对老赵的后续文章甚是期待. 谁知道看了老赵之后的两篇吐槽Go语言的文章, 发现完全不是那回事情, 吐槽内容偏差太远. 本来没想掺和进来, 但是看到QQ群里和图灵社区有很多人甚至把老赵的文章当作真理一样. 实在忍不住, 昨天注册了帐号, 进来也说下我的观点. 这是老赵的几篇文章: Go是一门有亮点的语言,老许是牛人,但这本书着实一般为什么我认为goroutine和channel是把别的平台上类库的功能内置在语言里为什么我不喜欢Go语言式的接口(即Structural Typing) 补...阅读全文

博文 2015-12-15 01:00:09 jingmiaowill

基于类型系统的面向对象编程语言Go

(整理自网络) 面向对象编程 Go语言的面向对象编程(OOP)非常简洁而优雅。说它简洁,在于它没有了OOP中很多概念,比如:继承、虚函数、构造函数和析构函数、隐藏的this指针等等。说它优雅,是它的面向对象(OOP)是语言类型系统(type system)中的天然的一部分。整个类型系统通过接口(interface)串联,浑然一体。 类型系统(type system) 很少有编程类的书籍谈及类型系统(type system)这个话题。但实际上类型系统是整个语言的支撑,至关重要。 类型系统(type system)是指一个语言的类型体系图。在整个类型体系图中,包含这些内容: 基本类型。如byte、int、bool、float等等。 复合类型。如数组(array)、结构体(struct)、指针(p...阅读全文

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

评: 为什么我不喜欢Go语言式的接口

最近在Go语言的QQ群里看到关于图灵社区有牛人老赵吐槽许式伟《Go语言编程》的各种争论. 我之前也看了老赵吐槽许式伟《Go语言编程》的文章, 当时想老赵如果能将许大书中不足部分补充完善了也是一个好事情. 因此, 对老赵的后续文章甚是期待. 谁知道看了老赵之后的两篇吐槽Go语言的文章, 发现完全不是那回事情, 吐槽内容偏差太远. 本来没想掺和进来, 但是看到QQ群里和图灵社区有很多人甚至把老赵的文章当作真理一样. 实在忍不住, 昨天注册了帐号, 进来也说下我的观点. 这是老赵的几篇文章: Go是一门有亮点的语言,老许是牛人,但这本书着实一般 为什么我认为goroutine和channel是把别的平台上类库的功能内置在语言里 为什么我不喜欢Go语言式的接口(即Structural Typing)...阅读全文

博文 2015-05-03 22:26:42 chai2010

Go语言的接口和实现类初探(一)

1.引入 接口泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法,使其能被修改内部而不影响外界其他实体与其交互的方式。(来源于百度百科) 2.其他语言的接口 java的接口 public interface Animal {//定义接口 void eat(); } public class Dog {//与接口里的方法名相同,但并未实现Animal接口 void eat() { } } public class Cat implements Animal {//实现了Animal接口,并且eat方法必须存在 @Override void eat() { } }3.Go语言的接口 package main import ( "fmt" ) //定义一个接...阅读全文

博文 2015-06-17 23:00:49 Libra412

一周学会go语言并应用 by王奇疏

《一周学会go语言并应用》 by王奇疏 ( 欢迎加入go语言群: 218160862 , 群内有实践) 零、安装go语言,配置环境及IDE 这部分内容不多,请参考我的这篇安装环境《安装go语言,配置环境及IDE》 日常只有2条命令: go run 文件路径/xxx.go 运行go程序 go build 文件路径/xxx.go 编译为二进制文件或exe文件 如果你不想每次都敲这些命令,附送1个《一键编译go文件命令.bat》 只能windows下使用,( 一般情况下,ide也是用同样的原理,ide的运行/编译也是利用这2个命令集成到ide里面 ) go build 命令生成的exe文件(或二进制文件)还是很小的,5M左右。 比c++ c#等要大一些。 这边是Go的1个ide,叫做liteIde...阅读全文

博文 2016-01-22 03:00:01 wangqishu

读 《我为什么放弃Go语言》 有感

最近又熟悉了下go语言,发现go语言还有许多设计不好的地方,然后又读到了《我为什么放弃Go语言》这篇文章, 对于某些方面,我还是比较认同的。 这篇文章总结了十六点,如下: 1.1 不允许左花括号另起一行 1.2 编译器莫名其妙地给行尾加上分号 1.3 极度强调编译速度,不惜放弃本应提供的功能 1.4 错误处理机制太原始 1.5 垃圾回收器(GC)不完善、有重大缺陷 1.6 禁止未使用变量和多余import 1.7 创建对象的方式太多令人纠结 1.8 对象没有构造函数和析构函数 1.9 defer语句的语义设定不甚合理 1.10 许多语言内置设施不支持用户定义的类型 1.11 没有泛型支持,常见数据类型接口丑陋 1.12 实现接口不需要明确声明 1.13 省掉小括号却省不掉花括号 1.14 编...阅读全文

博文 2016-04-05 10:00:10 simplelovecs

Go 语言的下一步 : Russ Cox 谈 Go 2 规划

7 月 13 日,Russ Cox 在 GopherCon 上分享了《The Future of Go》,回顾了 Go 语言的发展历史,展望了 Go 2。Rob Pike、Robert Griesemer 和 Ken Thompson 就一门新的编程语言讨论了一段时间,在 2007 年 9 月 25 日,Rob 建议将其命名为 Go。之后,Russ Cox 和 Lance Taylor 也加入了 Go 语言的设计团队。他们 5 人一起开发了两款编译器和一个标准库,为 2009 年 11 月 10 日 Go 语言以开源方式发布打下了基础。接下来的两年,在开源社区的帮助之下,Go 语言引入了很多大大小小的变化。几乎每周都有一些不兼容的变化,用 Go 开发的程序也需要不断更新。这妨碍了 Go 语言...阅读全文

博文 2017-07-14 07:54:37 开发资讯

golang 接口 参数

conn, err = ln.Accept() go handleConnection(conn) 看到这里我曾经有个疑问,为什么不是 handleConnection(&conn) ? package main import ( "fmt" ) type Interface interface { say() string } type Object struct { } func (this *Object) say() string { return "hello" } func do(i Interface) string { return i.say() } func main() { o := Object{} fmt.Println(do(&o)) fmt.Printf("CC...阅读全文

博文 2014-10-04 19:27:01 咖啡伴侣

一个Go语言接口和多操作系统实现的简单例子

尽管不是纯的OO语言,Go仍然提供了interface接口的功能,能够非常轻松地实现抽象与具体实现的分离。另外,按照文件名格式匹配的模式,Go程序可以自动帮你加载符合当前操作系统的对应接口实现(分析了编译时的.a包,发现编译时候自动匹配,并只把符合当前操作系统的实现打包),不需要程序员在程序里面使用if-else或者switch去实现,还算比较省心。 下面的例子,首先定义一个接口 I。接口I只有两个public的方法:Get() 和 Put()。注意方法名首字母必须大写。具体代码如下: //myservice.go package myinterface type I interface { Get() int Put(int) } 然后,按照Go的文件名匹配模式写不同操作系统的实现代码。具...阅读全文

从python 迁移到GO

这是一篇(长)博文, 介绍了我们在 Repustate 迁移大量 Python/Cython 代码到 Go 语言的经验。如果你想了解整个故事,背景和所有的事情,请继续往下读。如果你只是想了解 Python 开发者在一头扎进 Go 语言前需要了解什么,请点击一下链接: 从Python迁移到Go的建议(Tips & Tricks) 背景 在 Repustate,我们完成过的最棒的技术成就之一是实现了阿拉伯语的情感分析。阿拉伯语是一块难啃的硬骨头,因为它的词形变化相当复杂。比起譬如英语,阿拉伯语的分词(将一个句子切分呈几个独立的单词)也更困难,因为阿拉伯语的单词本身还可能会包含空白字符(例如:“阿列夫”在一个单词里的位置)。这也谈不上是泄密,Repustate 使用支持向量机(SVM)来获取一个句...阅读全文

博文 2014-12-04 19:00:01 legend_x

Go语言的学习过程5个阶段

Francesc (@francesc) 是 Go 核心团队的一员, 是提倡 Google Cloud 平台的开发者. 他是一个编程语言的爱好者, Google的技术指导大师, Go tour的 作为Go团队的开发者之一,Francesc可能比世界上其他人接触到的Go语言程序员都要多。正因为有了这样的有利条件,他把Go语言的学习过程划分为5个阶段。 这些阶段对于其他语言的学习也是成立的。理解自己处于哪个阶段,可以帮助你找到提高自己的最有效的方法,也可以避免每个阶段学习过程中的常见陷阱。 编者按:这篇文章对于每一个学习阶段都给出了交互式的代码片段。点击函数名你就可以跳到具体的函数定义,方便进行深入的研究。请看下文。 这里是GO程序员的五个...阅读全文

Go语言以匿名组合的方式实现继承

type Base struct { FirstName, LastName string Age float32 } func (base *Base) HasFeet() { fmt.Println(base.FirstName + base.LastName + "has feet! Base") } func (base *Base) Flying() { fmt.Println("Base Can flying!") } type Sub struct { Base Area string } func (sub *Sub) Flying() { sub.Base.Flying() fmt.Println("Sub flying") } func main() { chk := n...阅读全文

博文 2016-03-15 11:00:02 cc7756789w

Excelize - Golang 操作 Office Excel 文档类库

Excelize 是 Golang 编写的一个用来操作 Office Excel 文档类库,基于微软的 Office OpenXML 标准。可以使用它来读取、写入 XLSX 文件。相比较其他的开源类库,Excelize 支持写入原本带有图片(表)的文档,还支持向 Excel 中插入图片,并且在保存后不会丢失图表样式。 安装 go get github.com/Luxurioust/excelize 创建 XLSX package main import ( "fmt" "os" "github.com/Luxurioust/excelize" ) func main() { xlsx := excelize.CreateFile() // Create a new sheet. xlsx.N...阅读全文

博文 2017-03-20 08:39:16 xuri

jvm.go -- 设计和实现

jvm.go jvm.go是一个完全用Go语言实现的JVM,关于这个项目的发起原因和简单介绍可以看这篇文章。 最新进展和下一步计划 jvm.go的开发已经进行了一个半月了,除了HelloWorld和一些简单的Java代码以外,JUnit也可以正常运行了。下一步的计划是在jvm.go上把Jetty跑起来。下面介绍一下jvm.go的一些关键部分的设计和实现。 目录结构 jvmgo jvm的go语言实现 cmdline 这个包用来解析java命令行参数classfile 这个包把[]byte转化成ClassFile结构classpath 这个包实现了class文件查找native rt.jar里的本地方法实现jvm jvm核心功能 instructions 指令集rtda 运行时数据区(Runti...阅读全文

博文 2015-03-14 14:27:51 zxhoo

安装go语言,配置环境及IDE,只需3步

安装go语言,配置环境及IDE,只需3步 ( 欢迎加入go语言群: 218160862 , 群内有实践) 第1.下载 go压缩包,解压 ,如果你是window系统,请选择go1.5.windows-386.zip第2.将go语言的解压路径写 到电脑的环境变量中:http://www.cnblogs.com/atyou/archive/2012/10/15/2724490.html .第3. go的ide 叫做 liteIde ,这个ide本身就是用go语言 + qt库写的界面,还是中国人写的,作者很强悍 https://github.com/visualfc/liteide. 安装即可, liteIde还是不错的,这个ide占用内存比较小。 go语言的windows界面开发有walk(win...阅读全文

博文 2016-01-22 03:00:01 wangqishu

nodejs+express+mongodb简单的例子(改)

简单的介绍下node+express+mongodb这三个东西。node:是运行在服务器端的程序语言,表面上看过去就是javascript一样的东西,但是呢,确实就是服务器语言,个人觉得在一定层次上比c灵活,java就不提了。反正你只要认为node可以干很多事就行了,绝对不只是web开发。express:这货呢,就是node的一种框架,node有很多的开源框架,express是一个大神开发的(这尊神已经移驾到go语言的开发去了)。express可以让你更方便的操作node(因为原生的node写起来比较麻烦,而且因为node是事件驱动的,所以有很多异步回调,写多了就看着晕...)mongodb:这是一种非关系数据库(nosql),太深的东西我也不清楚,反正这货也有很强大的地方,缺点就是不适合数...阅读全文

博文 2015-08-25 14:00:02 zq0079

Golang全接触

满打满算, 从好友推荐Golang至发文时, 使用Golang已经有1年多了. 这种时间对于C/C++ Java这些老者来说, 简直是菜鸟级别的经验 但作为新生代语言的特点就是实战. Golang这一年里, 已经为项目提供了稳定的服务器和强大的扩展能力, 与客户端的Unity3D里的C#一样, 都是强大, 极致开发效率代表的优秀开发语言. 用途篇 Golang到底拿来做啥? 我需要么? 高效(性能,开发)的服务器语言. 包括Web, 游戏, App 编写桌面级UI暂不是很适合 我需要把现在的C++, Python, Erlang等服务器改成Golang么? 性能有瓶颈, 开发效率低, 有钱有时间的话, 完全可以 评价篇 听过太多的人对Golang的评价, 大概分为这么几类: C/C++性能党...阅读全文

博文 2015-07-30 03:00:00 findumars

go中接口与继承的选择

Go语言中没有继承,但是可以用结构体嵌入实现继承,还有接口这个东西。现在问题来了:什么场景下应该用继承,什么场景下应该用接口。 问题描述 这里从一个实际的案例出发。网游服务器中的一个例子。假设每个实体都有一个ObjectID,packet中都有使用到这个ObjectID,客户端与服务端之间通过这个ObjectID知道是一个什么实体。用面向对象的观点,就是有一个Object对象,里面有getObjectID()方法,所有对象都是继承自Object对象。 Creature继承Object,表示游戏中的生物。然后像Monster,NPC,都继承自Creature的。玩家分为三个种族,Slayer/Vampire/Ouster三个不同的类实现,继承自Creature。 Item也继承自Object,...阅读全文

博文 2017-06-01 02:03:26 徐学良

golang(2):beego 环境搭建

本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/46695513 转载请一定注明出处! 1,关于beego beego是一个用Go开发的应用框架,思路来自于tornado,路由设计来源于sinatra,支持如下特性 MVC,REST,智能路由,日志调试,配置管理,模板自动渲染,layout设计 中间件插入逻辑,方便的JSON/XML服务 官网 http://beego.me 网站很花哨呢。 2,头疼的gopath Go从1.1版本开始必须设置这个变量,而且不能和Go的安装目录一样,这个目录用来存放Go源码,Go的可运行文件,以及相应的编译之后的包文件。所以这个目录下面有三个子目录:src、bin、pkg。 不知道为啥这样弄,...阅读全文

博文 2015-10-16 12:00:01 freewebsys

GO json数据解析

json 是现在非常常见的数据传递方式, go本身也集成了json的生成和解析 引入包 import { "bytes" "encoding/json" } 解析 定义 json 对应的实体类, 准确的说是结构体 type GoAccessToken struct { AccessToken string ExpiresIn int } 创建该结构体的引用 goAccessToken := &GoAccessToken{} 通过Unmarshal去解析json字符串 err := json.Unmarshal(str, goAccessToken) 最终的 goAcessToken 为解析后的对象 如果发现对象中的成员变量没有值, 请检查成员变量的首字母是否大写, 注意, json 字符串的...阅读全文

博文 2017-02-10 14:44:35 yin32167

Go接口

Go语言的编程哲学因为有接口而趋近完美 1.其他语言的接口: C++,Java等主流编程语言中,接口主要作为不同组件之间的契约存在。对契约的实现是强制的,你必须声明你的确实现了该接口。 为了实现该接口,你必须从该接口继承 interface IFoo { void Bar(); } class Foo implements IFoo { // Java文法 // ... } class Foo : public IFoo { // C++文法 // ... } IFoo* foo = new Foo; Java中抽象类和接口的区别: 1.抽象类,子类继承时,有些方法可以不用重写,关系是is-a;而implement一个接口,则需要实现其全部方法,关系是has-a。 抽象类中的非abstrac...阅读全文

博文 2015-06-17 23:08:23 luan_tianjiao

Go语言学习(十三)面向对象编程-继承

1.匿名组合 Go语言也提供了继承,但是采用了组合的方式,所以我们将其称为匿名组合: package main import "fmt" //定义基类 type Base struct { Name string } //基类相关的2个成员方法 func (base *Base) A() { fmt.Println("Base method A called...") } func (base *Base) B() { fmt.Println("Base method B called...") } //定义子类 type Son struct { Base //"继承"基类 } //重写基类的B方法 func (son *Son) B() { son.Base.B() //调用基类的B方法...阅读全文

博文 2016-06-16 10:00:00 mChenys

golang 高性能定时器之最小堆实现

业务中有很多定时任务,在规定时间内,不管是否完成都需要回调,明显,这种需要实现定时器,比较好的是时间轮和最小堆。这里介绍最小堆实现,这里就是个变相的topN 问题。 该文章后续仍在不断的更新修改中, 请移步到原文地址http://www.dmwan.cc/?p=146 由于是项目中要使用,不能仅考虑最小堆就完事,需要添加几条特性,第一个是要用一个timer 实现计时功能,第二个是要有提前删除功能。特别提下第二点,在高并发的情况下,timer 不能让任务自动过期,业务成功的情况下,要能提前删除,否则,timer压力会越来越大; 项目github地址:https://github.com/caucy/timeloop。 调用示例: package main import ( "os" "fmt"...阅读全文

博文 2018-06-01 15:33:07 鼎铭