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

go语言选择语句 switch case

根据传入条件的不同,选择语句会执行不同的语句。下面的例子根据传入的整型变量i的不同而打印不同的内容: switch i { case 0: fmt.Printf("0") case 1: fmt.Printf("1") case 2: fallthrough case 3: fmt.Printf("3") case 4, 5, 6: fmt.Printf("4, 5, 6") default: fmt.Printf("Default") } 运行上面的案例,将会得到如下结果:  i = 0时,输出0;  i = 1时,输出1;  i = 2时,输出3;  i = 3时,输出3;  i = 4时,输出4, 5, 6;  i = 5时,输出4, 5, 6;  i = 6时,输出4,...阅读全文

博文 2015-07-29 03:00:01 osfipin

全套Go语言学习教程,适合编程零基础或者有其他编程语言基础的同学。

# 课程介绍 本学习课件是尚硅谷的韩顺平老师亲自的录制的,课件内容包括:视频课件 、课堂笔记、辅助文档、代码等。 韩老师讲课非常有特色,生动有趣,通俗易懂,我就是一路跟着这套视频学过来的。 # 获取方式 评论里留下你的邮箱,我争取在评论后的一个礼拜内把视频发到邮箱里,女士优先(如果有的话,哈哈)。 ![文件截图.png](https://static.studygolang.com/181214/bae187056b873bf8f0e1d3caaa3193ad.png) ![视频截图.png](https://static.studygolang.com/181214/27232d537149f06841a7933c36817a8f.png...阅读全文

博文 2018-12-14 10:29:06 Subhuti_hu

正确使用Go的Timer

我们总是会使用Timer去执行一些定时任务,最近在Go语言的定时器使用上面不小心踩到一点问题,这里记录一下。 go demo(input) func demo(input chan interface{}) { for { select { case msg <- input: println(msg) case <-time.After(time.Second * 5): println("5s timer") case <-time.After(time.Second * 10): println("10s timer") } } } 写出上面这段程序的目的是从 input channel 持续接收消息加以处理,同时希望每过5秒钟和每过10秒钟就分别执行一个定时任务。但是当你执行这段程序...阅读全文

博文 2014-11-16 09:30:05 skoo

Go语言圣经中文版

在C语言发明之后约5年的时间之后(1978年),Brian W. Kernighan和Dennis M. Ritchie合作编写出版了C语言方面的经典教材《The C Programming Language》,该书被誉为C语言程序员的圣经,作者也被大家亲切地称为K&R。 同样在Go语言正式发布(2009年)约5年之后(2014年开始写作,2015年出版),由Go语言核心团队成员Alan A. A. Donovan和K&R中的Brian W. Kernighan合作编写了Go语言方面的经典教材《The Go Programming Language》。Go语言被誉为21世纪的C语言,如果说K&R所著的是圣经的旧约,那么D&K所著的必将成为圣经的新约。 镜像: http://books.stu...阅读全文

博文 2016-03-29 07:00:05 smallmaple

golang开发环境搭建

Golang开发环境搭建 Golang 入门教程 开发环境搭建 介绍 Go语言是谷歌推出的一种全新的编程语言, 可以在不损失应用程序性能的情况下降低代码的复杂性。 谷歌首席软件工程师罗布派克(Rob Pike)说: 我们之所以开发Go, 是因为过去1 0多年间软件开发的难 度令人沮丧。 谷歌资深软件工程师罗布·派克(Rob Pike)表示, “Go让我体验到了从未有过的开发效率。 ”派克表示, 今天的C++或C一样, Go是一种系统语言。 他解释道, “使用它可以进行快速开发, 同时它还是一个真 正的编译语言, 我们之所以现在将其开源, 原因是我们认为它已经非常有用和强大。 百度百科 维基百科 golang官网 安装 Windows 官方说明 http://golang.org/doc/in...阅读全文

博文 2014-12-05 14:00:02 steven_hl_0901

Go 语言测试(Test)、性能测试(Benchmark) 学习笔记

简介 Test Package testing provides support for automated testing of Go packages. It is intended to be used in concert with the “go test” command, which automates execution of any function of the form. testing包提供了对Go包的自动测试支持。 这是和go test 命令相呼应的功能, go test 命令会自动执行所以符合格式 func TestXXX(t *testing.T) 的函数。 Benchmark Functions of the form func BenchmarkXxx(b ...阅读全文

博文 2015-12-14 18:00:00 cchd0001

golang学习笔记:go 语法篇(一)

学习一门新的语言肯定是要从他的基本语法开始,语法构成了整个程序设计的基础,从语法中我们也可以看到这门语言的一些特性,但是话说回来,语法这东西,不同的语言大同小异,所以这也对语法的记忆造成了一定的难度,其实最好的方法应该是旁边有本书,随时可以拿过来查阅或者纠正。当然golang的语法也是这样,下面的一些是我学习七牛云存储团队许式伟等出的《Go语言编程》: http://baike.baidu.com/link?url=vFrjnVJwITN0LaRbL7TmWYpq5V8JLWzL_NycAQy6w0e7JXP6a4bGm61ge0gGMU6jNFQO_RnuDGEQPh7YK9w4S_ 语法部分的时候整理的一些,这本书对于新手入门还是挺有帮助的。为了日后可以及时回顾,所以记录下来了。为了避免...阅读全文

博文 2015-06-12 09:00:06 u011321908

GO语言基础入门--类型

类型 本Go语言基础入门内容均来自于《Go语言编程》,个人记录,加深理解。 Go语言内置以下这些基础类型:  布尔类型: bool。  整型: int8、 byte、 int16、 int、 uint、 uintptr等。  浮点类型: float32 、 float64。  复数类型: complex64、 complex128。  字符串: string。  字符类型: rune。  错误类型: error。 此外, Go语言也支持以下这些复合类型:  指针( pointer)  数组( array)  切片( slice)  字典( map)  通道( chan)  结构体( struct)  接口( interface) 在这些基础类型之上Go还封装了下面...阅读全文

博文 2015-04-22 13:00:05 chenqijing2

零猫科技告诉你-Go语言可以干嘛?

Hi,大家好!我是GO首席软件工程师Rob Pike说:我之所以被开发,是因为过去10多年间软件开发的难度令人沮丧。你所不知的,GO Go语言是谷歌发布的第二款开源编程语言。专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。Go的目标是希望提升现有编程语言对程序库等依赖性(dependency)的管理,这些软件元素会被应用程序反复调用。由于存在并行编程模式,因此也被设计用来解决多处理器的任务。我是GO,我够红 目前,已经有很多公司开始使用Go语言开发自己的服务,甚至完全转向Go开发,也诞生了很多基于Go的服务和应用,比如Dokcer、k8s等,现在我们看下,有哪些大公司在用Go语言了。Google对Go寄予厚望。旗下Ap...阅读全文

GO语言学习: 项目构建 及编译 初步

一个GO工程中主要包含以下三个目录: src:源代码文件 pkg:包文件 bin:相关bin文件 step1: 建立工程文件夹 goproject step2: 在工程文件夹中建立src,pkg,bin文件夹 step3: 在GOPATH中添加projiect路径 例 e:/goproject step4: 如工程中有自己的包examplepackage,那在src文件夹下建立以包名命名的文件夹 例 examplepackage step5;在src文件架下编写主程序代码代码 goproject.go step6;在examplepackage文件夹中编写 examplepackage.go 和 包测试文件 examplepackage_test.go step7; 编译调试包 go bui...阅读全文

博文 2015-06-04 18:00:00 phlong999

Go最新的dep详解

该文翻译自https://medium.com/i-can-haz-downtime/dep-101-c85e8ab6ed45#.hbngswi0e我很高兴在过去几个月和几个其他gopher开发的一个原型依赖管理工具,名为dep。dep是去年开始由Peter Bourgon组织的项目的一部分。由于我参与开发了一个“godep”,Go的OG依赖管理工具(继承自Keith Rarick),因此加入了dep项目的团队。除了我自己和Peter,团队的其他成员是Jessie Frazelle,Andrew Gerrand和Sam Boyer。 Andrew是Google Go team的一员。 Jessie在Google工作,并参与过大型Go项目,如Docker和Kubernetes。 Sam维护gp...阅读全文

博文 2017-02-14 11:24:45 方圆

golang命令行库cobra的使用

简介 Cobra既是一个用来创建强大的现代CLI命令行的golang库,也是一个生成程序应用和命令行文件的程序。下面是Cobra使用的一个演示: Cobra提供的功能 简易的子命令行模式,如 app server, app fetch等等 完全兼容posix命令行模式 嵌套子命令subcommand 支持全局,局部,串联flags 使用Cobra很容易的生成应用程序和命令,使用cobra create appname和cobra add cmdname 如果命令输入错误,将提供智能建议,如 app srver,将提示srver没有,是否是app server 自动生成commands和flags的帮助信息 自动生成详细的help信息,如app help 自动识别-h,--help帮助flag...阅读全文

博文 2016-07-29 10:00:01 borey

go语言:flag的使用

go语言flag的使用 package main import ( "flag" "fmt" ) var music_file *string = flag.String("file", "musicfile", "Use -file ") func main() { flag.Parse() fmt.Println(*music_file) } 例如文件为flagTest.go go run flagTest.go -file "../music/sun.mp3" 即可指定file参数的值。 如果直接使用go run flagTest.go -file则会提示你-file的使用说明.-file="musicfile": Use -file 如...阅读全文

博文 2014-10-21 23:00:00 x369201170

go语言包与包引用

go语言中包(package)与java中的包(package)非常类似,都是组织代码的方式,而且都和磁盘上的目录结构存在对应关系。 go语言中,包名一般为go代码所在的目录名,但是与java不同的是,go语言中包名只有一级,而在java中包名是以点分割的多级目录组合的。 go语言中,引用包时需要以GOPATH/src目录为相对根目录,依次输入下面的各级目录名。 如:环境变量GOPATH = ~/go 包hello下有hello.go,包所在的磁盘路径为: ~/go/src/golang_everyday/hello 也就是说,hello.go的路径为: ~/go/src/golang_everyday/hello/hello.go 则在其它文件中引用该go文件时,代码应为: import ...阅读全文

博文 2015-03-04 03:00:02 baiyuxiong

godebug:一个跨平台的Go程序调试工具

godebug是一个跨平台的Go程序调试工具,传统的编译型语言调试器使用底层系统调用并读取二进制文件用于调试各类符号。使用起来很麻烦而且很难移植。 godebug使用不同的方法,直接把源码作为目标程序,在每一行插入调试代码,然后编译并运行。结果就是一个全功能的调试器,完全可以移植到不同平台。事实上,由于有了gopherjs ,你也可以在浏览器上进行调试: 点击此处尝试原文调试窗口。通过原文的“DEBUG IT”按钮,你可以编辑程序并重新调试它。 工作原理 下面这张是描述上面例子的矢量图: 从中可以看出原始代码转换了两次:第一次godebug插入调试instrumentation,然后gopherjs将结果编译成JavaScript。 让我们看一下instrumentation步骤,以下是go...阅读全文

博文 2015-04-23 01:00:00 mengyidan1988

go reflect TypeOf 与ValueOf

学习go的反射对于理解go的底层实现以及接口机制有着非常重要的价值;本篇文章从一个源程序来体验一下go反射的两个核心函数TypeOf 和ValueOf的使用方法,特别体验下怎么根据type构造type实例的办法。 package main import ( "fmt" "reflect" ) type Speaker interface { Speak()string Set(string) } type Teacher struct { Name string } func (this *Teacher) Speak() string { return this.Name } func (this *Teacher) Set(name string) { this.Name = name ...阅读全文

博文 2015-06-18 09:03:56 hittata

Go程序设计语言(一)

Go程序设计语言(一) 八 23 bigwhite技术志 Blog, Blogger, C, Cpp, Go, Golang, Google, Opensource, Programmer, 博客, 开源, 程序员, 编程,语言, 编译器 No Comments 本文译自Rob Pike的Go语言PPT教程 – "The Go Programming Language Part 1(updated June 2011)"。由于该教程的最新更新时间早于Go 1版本发布,因此该PPT中的一些内容与Go 1语言规范略有差异,到时我会在相应的地方做上注解。 谁发明了Go Go语言的设计和实现工作是由Google的一个研发小组以及来自世界各地的大量贡献者共同完成的。 联系方式: http://gola...阅读全文

博文 2014-11-07 14:51:54 bigwhite

Go程序如何安全退出(CTRL+C)

http://m.oschina.net/blog/125853 如果是命令行程序需要退出, CTRL+C是最直接的方法. C语言如何处理CTRL+C CTRL+C会向命令行进程发送中断信号, 在C语言的中的signal函数可以注册信号的处理函数. signal函数的签名如下: void (*signal(int sig, void (*func)(int)))(int); 比如, 我们要处理CTRL+C对应的SIGINT信号: #include #include #include void sigHandle(int sig) { switch(sig) { case SIGINT: printf("sig...阅读全文

博文 2014-10-20 16:00:00 leonpengweicn

还有比这更好的消息吗?— Go支持Android和iOS

minux大神就说了: 代码在 https://bitbucket.org/minux/goios 的 ios3 分支。 初步的文档在 misc/ios/README。交叉编译需要 iOS SDK,得在 OS X 上面开发。理论上如果你能在 Linux 架设交叉编译环境的话,在 Linux 上开发也不是不行。 我计划把这个 port 加入到 Go 1.5。按照 Brad 给出的 1.5 预览, 应该问题不大。http://talks.golang.org/2014/state-of-the-gopher.slide#40 现在的问题是如何架设 builder。 哎,断断续续搞了3年,终于搞定了。我觉得用 Go 开发 iOS 程序比用 Go 开发 Andro...阅读全文

go类型断言

go里面的类型断言写法: x.(T) 其中x为interface{}类型 T是要断言的类型。 类型断言有个非常好的使用场景:当某个类型为interface{}的变量,真实类型为A时,才做某件事时,这时可以使用类型断言 下面有个例子。只有当某个interface{}的类型 存储的是int时才打印出来。 package main import ( "fmt" "math/rand" "time" ) func main() { var v interface{} r := rand.New(rand.NewSource(time.Now().UnixNano())) for i := 0; i < 10; i++{ v = i if (r.Intn(100) % 2) == 0 { v = "h...阅读全文

博文 2015-05-19 23:00:02 guonaihong

golang编程之时间编程

golang编程之时间编程 编程离不开时间,时间管理,严格的说分成两块,一个是当前的时刻,对应的是一个点,还有是一段时间间隔。本文简单的讲讲go的时间相关的编程,比较简单,高手可以一笑而过。 golang对时间的支持,是package time做的事儿,里面有好多的函数,我就不一一举例学习,毕竟这是官方文档干的事情。我们初步的学习下常用的函数。 第一个是UNIX epoch time,确切的说就是自1970-01-01 00:00:00 GMT以来的秒数,不知道如何获取的,可以在shell下执行 date +%s manu@manu-hacks:~/code/go/self$ date +%s 1385131172 熟悉Linux下C编程的就是time函数的返回值: #include 阅读全文

博文 2015-01-31 01:00:03 stephen830

go语言编译器详解

这里以Windows7 64位为例,如果是32位环境需安装对应版本程序。 一、安装golang1.2.2 1.3及1.3.1编译生成的二进制文件,无法使用LiteIDE23.2携带的gdb7.7进行调试。 二、安装及配置LiteIDE 将liteidex23.2.windows.7z解压到D:\即完成安装。 2.1 设置编辑环境 因为是64位环境,所以选择“win64”。 查看->编辑环境变量,确认GOROOT变量与GO安装路径一致。 2.2 添加GOPATH 查看->管理GOPATH...,创建新目录E:\Code_Repository\golang,并添加到“自定义目录”。 2.3 新建项目 选择上一步添加的GOPATH,模板为Go1 Command Project 编辑源代码,添加几行...阅读全文

博文 2016-11-21 07:00:09 gjy211

go语言初始化内部结构体3中方式

1 package main 2 3 import ( 4 "fmt" 5 ) 6 7 type User struct { 8 Id int 9 Name string 10 Age int 11 } 12 13 type Manger struct { 14 User 15 title string 16 } 17 18 func main() { 19 m := Manger{User:User{1, "ok", 12}, title:"123"} //可以 20 m2 := Manger{User{1, "ok", 12}, "123"} //可以 21 m3 := Manger{User:User{Id:1, Name:"ok", Age:12}, title:"123"} //可...阅读全文

博文 2015-05-14 03:00:00 or2-

golang枚举类型 - iota用法拾遗

在c#、java等高级语言中,经常会用到枚举类型来表示状态等。在golang中并没有枚举类型,如何实现枚举呢?首先从枚举的概念入手。 1、枚举类型定义 从百度百科查询解释如下:http://baike.baidu.com/link?url=Lrq57-YIZJ35grERvdg2kh7lfGfxvvLCVsNBMAqjBUOQX3CJUYnJp-9oZ2-rf3JGMqL3e4RbnSRQWs_5nmaI6K 枚举类型在C#或C++,java,VB等一些计算机编程语言中是一种基本数据类型而不是构造数据类型,而在C语言等计算机编程语言中是一种构造数据类型。它用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。 枚举可以根据Integer、Long、Short或Byte...阅读全文

go语言 自定义 error

package main import ( "errors" "fmt" ) type data struct{} func (this *data) Error() string { return "" } func bad() bool { return true } //自定义错误返回函数 func test() error { var p *data = nil if bad() { return p } return nil } //只是返回错误非空 func test1() error { var val error = errors.New("XXX") return val } func main() { var e error = test() if e == nil { ...阅读全文

博文 2014-10-04 19:26:43 elick

使用 SwaggerUI 创建 Golang API 文档

为你的 API 提供一个文档比你想象中更加有用,即使你没有公开你的 API ,为你的前端或者移动团队提供一个文档会比你提供截图/片段或使用 Postman/Insomnia (带有同步的高级版本)等付费产品更容易。借助 SwaggerUI ,您可以自动获得所有 API 的设计良好的文档。当切换到 Go 时,由于缺少文档/教程,我在配置它的时候出现了一些问题,所以我决定写一个。 ![goswagger](https://raw.githubusercontent.com/studygolang/gctt-images/master/swagger-golang/swagger-golang1.jpg) 示例程序:[链接](https://github.com/ribice/golang-swa...阅读全文

博文 2018-02-05 12:02:27 toseek

我眼中的编程语言Rust和GO

我已经花了不少时间在把玩一些新语言 – 特别要指出,Rust抓住了我的想象力。我们在Chef中使用大量的Ruby、Erlang和JavaScript(后来是Angular)代码。以下是我喜欢这些语言的东西: Ruby的感觉就像永远在敲打我头脑中“whipuptitude”部分。它很容易,可以简单的坐下来开始编码,你基本不会碰到困难。它也有类似Perl中我很喜欢的表达力。你越熟练这个语言,你就会越觉得你好像可以用英语(母语)表达自己的想法。Erlang和OTP极好操作。那些模式匹配、Actor并发、单一赋值,还有令人愉快的运行时导致运行、管理、调试产品服务是一种乐趣,我认为它语法是丑陋的,但是当你掌握它后,你会发现它的某种简洁美。现代JavaScript以它自己的方式变得越来越讨人喜欢。比如你...阅读全文

博文 2015-09-02 00:00:01 haiguo_gu

golang的select典型用法

golang 的 select 的功能和 select, poll, epoll 相似, 就是监听 IO 操作,当 IO 操作发生时,触发相应的动作。 示例: ch1 := make (chan int, 1) ch2 := make (chan int, 1) ... select { case <-ch1: fmt.Println("ch1 pop one element") case <-ch2: fmt.Println("ch2 pop one element") } 注意到 select 的代码形式和 switch 非常相似, 不过 select 的 case 里的操作语句只能是【IO 操作】 。 此示例里面 select 会一直等待等到某个 case 语句完成, 也就是等到成功从...阅读全文

博文 2015-02-15 18:23:33 YanyiWu

golang的闭包和普通函数调用区别

先看一段程序 package main import ( "fmt") func main() { a := []int{1, 2, 3} for _, i := range a { fmt.Println(i) defer p(i) } } func p(i int) { fmt.Println(i) } 运行这段程序,输出结果为 1 2 3 3 2 1 这里就是普通的函数调用,每次调用func p时,完成 i 的值复制,然后打印,此时 i 值复制了3次,分别是1,2,3。由于defer是后进先出,所以执行变成3,2,1 下面我我们用闭包改写下程序: package mainimport ( "fmt")func main() { a := []int{1, 2, 3} for _, i ...阅读全文

博文 2014-10-04 19:26:14 liangDream

一人千面:谈谈Go语言中的type

世界是复杂的。一个人、一个事物可以有多样的特性,而多个人多个事物又可以表现出一致的特性;从微观角度说,即具体到个体时,要求这个个体是多功能的多样性的,能够完成越多的功能具有越多的特性越好。比如一个人可以同时具有贤妻、慈母、严师和路人甲的身份,比如一个数字可以表示年龄、高度、分数等。从宏观角度说,从管理复杂性的角度出发,又要求许多的个体具有一致性以便进行统一处理以降低管理成本,比如各种机动车都可以“驾驶”,各种食物都可以“食用”,各种书写工具都可以“写”。换而言之:微观上一人千面;宏观上千人一面。 编程本质上是为了解决人类的问题满足人类的需要,所以需要把现实世界映射到编程语言里,即在编程语言中建立对应的模型。在Go语言里,提供了很好的机制来建立这种模型,也就是type和interface。ty...阅读全文

CentOS安装Go语言编译环境&配置LiteIDE

Go语言是谷歌2009正式推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。 到这里 https://code.google.com/p/go/downloads/list 选择你需要的版本,安装非常简单,如下: 1 2 3 wget https://go.googlecode.com/files/go1.1.1.linux-386.tar.gz tar -C /usr/local -xzf go1.1.1.linux-386.tar.gz vim /etc/profile #打开/etc/profile在最后添加下面两行 export GOROOT=/usr/local/go export PATH=$GOROOT/bin:$PATH 1 2 3 4 source...阅读全文

博文 2014-10-12 19:00:01 hack715

Go编程语言-Eclipse集成goeclipse开发插件,安装详情及编写Hello Word-陈科肇

goeclipse 插件指南 http://goclipse.github.io/ 概述 GoClipse对于一个Eclipse IDE的Go编程语言。 特征 安装 用户指南 Github上 (最新发布) (报告问题) GoClipse用户组 -讨论和帮助,GoClipse 安装要求 Java VM version 8 or later. Eclipse 4.6 (Neon) or later. CDT 9.0 or later (this will be installed or updated automatically as part of the steps below). 开始安装 离线安装 因为GFC的封闭,我们需要先到https://github.com/GoClipse/go...阅读全文

博文 2016-09-09 15:00:00 u013474104

[Go语言]cgo用法演示

经历了数十年发展的C语言,各种各样的现成的库已经非常丰富。通过cgo,可以在Go语言中使用C语言代码,充分利用好现有的“轮子”。 本文所有代码,在下述环境中调试通过: Windows 8.1 64-bitGo 1.3.3 64-bitGCC 4.8.1 64-bit 要想使用cgo,要导入C“包”: import "C"这行代码的上方要紧挨着连续的若干行的注释,在这些注释中编写C代码。例如: /* int PlusOne(int n) { return n + 1; } */ import "C" 我们知道,如果要引用一个包中的符号,需要用“包名.符号名”的方式,C“包”也是这样,例如:C.int、C.GetWindowLongPtr。 下面介绍使用C语言变量、函数、结构体、联合体、回调函数...阅读全文

博文 2014-10-15 11:00:00 jthmath

golang指针与C指针的异同

总结一下golang中的指针与C语言的指针的用法。 总体一致: C的代码: ? 1 2 3 4 int *number; number = (int *) malloc(sizeof(int)); *number = 3; printf("%d\n", *number); golang的代码: ? 1 2 3 4 var pointer *int; pointer = new(int); *pointer = 3; fmt.Println(*pointer); 多重指针情况: C的代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 int **outer; int *inter; inter = (int *) malloc(sizeof(int)); *inter = ...阅读全文

博文 2014-10-25 10:00:01 zhjih123

GoLang之对象

GoLang之面向对象 Go语言没有沿袭传统面向对象编程中的诸多概念,比如继承、虚函数、构造函数和析构函数、隐藏的this指针等。 类方法 在Go语言中,可以给任意类型(包括内置类型,但不包括指针类型)添加相应的方法。 如下面的这个例子,定义了一个新类型Integer,它和int一样,只是为它内置的int类型增加了个新方法Less() type Integer int func (a Integer) Less(b Integer) bool { return a < b } func main() { var a Integer = 1 if a.Less(2) { fmt.Println("less then 2") } } 可以看出,Go语言在自定义类型的对象中没有C++/Java那种...阅读全文

博文 2015-05-13 03:00:05 chenny7

golang对象序列化和反序列化

模拟测试1,000, 000条数据 每条10个字节 也就是10M不到的 数据(高度结构化的数据) 过程 1.对象序列化为 byte 2.byte反序为对象 3.gzip压缩byte 测试语言go测试方案: raw byte,json ,bson, msgpack (protostuff需要先做对象配置文件,比较麻烦,通常认为和msgpack性能相当 )结果:msgpack 胜出 大小 gzip压缩后大小 对象到byte耗时 byte到对象耗时 raw 10000000 6573252(65%) 未测试 未测试 json 47515988 7919511 (17%) 3248ms 5280ms bson 49888910 9506965 (19%) 3863ms 6235ms msgpack ...阅读全文

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

Go语言/golang/位操作/取反/异或/左移/右移

Go语言位操作实例 package main import ( "fmt" ) // 获取0-n之间的所有偶数 func even(a int) (array []int) { for i := 0; i < a; i++ { if i&1 == 0 { // 位操作符&与C语言中使用方式一样 array = append(array, i) } } return array } // 互换两个变量的值 // 不需要使用第三个变量做中间变量 func swap(a, b int) (int, int) { a ^= b // 异或等于运算 b ^= a a ^= b return a, b } // 左移、右移运算 func shifting(a int) int { a = a << 1 ...阅读全文

博文 2014-10-04 19:27:13 viney

一个java和golang(go语言)通信的例子。

go语言是一个系统级语言,好处非常多。虽然是一个静态编译型语言,但可以像动态语言一样写程序,语言本身可以提供编写应用程序所需的基本组件,而不用引入第三方的包。如果了解c++、java、python等,会对其简洁和强大有更深的认识,c++实在过于繁琐,java也没有想象的简单,python的效率和go不是一个数量级的。那么多的特性,印象最深的就是其对并发的支持,优雅而高效。一般情况下并发通过进程、线程、基于异步IO的回调来实现,进程和线程不能大量的创建,如超过1万个系统资源就不堪重负了,回调可以尽可能少的创建线程,但用法不太符合自然习惯,比如boost 的asio就是一个很好的处理并发的框架,使用得当可以写出高效优雅的服务器程序。而go则在语言级别支持协程,协程是一种轻量级线程,可以创建百万个...阅读全文

博文 2014-10-04 19:26:09 qfsun

Go适合做什么?为何这么多人偏爱Go语言?

Go作为Google2009年推出的语言,其被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。 对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了。 到现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。 哪些大公司在使用Go语言: 1、Google 这个不用多做介绍,作为开发Go语言的公司,当仁不让。Google基于Go有很多优秀的项目,比如:https://github.com/kubernetes/kubernetes ,大家也可以在Github上 https://github.com/google/ 查看更多Google的Go开源项目。 2、Face...阅读全文

博文 2019-02-10 10:32:40 m0_37125796

Go 解决"Connection reset by peer"或"EOF"问题

【问题】 我编写了一个http Client程序代码如下: // create a request req, err := http.NewRequest(method, url, body) if err != nil { return nil, err } // send JSON to firebase resp, err := http.DefaultClient.Do(req) if err != nil { return nil, err } if resp.StatusCode != http.StatusOK { return nil, fmt.Errorf("Bad HTTP Response: %v", resp.Status) } defer resp.Body.Clo...阅读全文

博文 2016-12-19 14:00:02 吃一堑消化不良

Go 摆脱了 C,又惹上了 Java?

talks.golang.org 前几天放出了 PPT《Go in Go》和 《The State of Go》讲解最近 Go 的开发动态和成果: 随着 Go 1.5 版本的开发,现在整个系统都是使用 Go 编写的(有一小部分汇编) C 已经成为过去时了。 Go 1.5 计划在 8 月份发布,将会尝试支持 iOS。(Go 1.4 已经正式支持 Android) 4月份进行的 NYJavaSIG 聚会上 Go 团队的技术主管经理分享了《Go for Java Programmers》,为 Java 程序员提供的 Go 入门指南,正式向 Java 领域进军了吗? 视频地址:https://www.youtube.com/watch?v=_c_tQ6_3cCg PPT 地址:http://talk...阅读全文

博文 2015-05-29 18:53:00 oschina

Go计算运行的时间

函数time.Since() 计算golang运行的时间是非常有用的性能衡量指标,特别是在并发基准测试中。下面将介绍如何简单地使用Go语言来计算程序运行的时间。 简单地使用Golang的time.Since()函数即可。下面有一个完整例子展示这个用法。 package main import ( "fmt" "time" ) func StartCac() { t1 := time.Now() // get current time //logic handlers for i := 0; i < 1000; i++ { fmt.Print("*") } elapsed := time.Since(t1) fmt.Println("App elapsed: ", elapsed) } fun...阅读全文

博文 2016-05-20 11:00:00 GreatElite

2015年web开发的预测。。go语言

本文中,我们将一同看看当今 Web 开发的发展趋势,给大家分享我对 2015 年及未来的一些看法、观察和预测。我从 2000 年就开始做 Web 技术方面的工作,而近几年主要是做云架构解决方案。作为一名 Web 开发者,我曾在 .Net、Node.js 和 Go 技术栈上开发 Web 应用和 Web 服务。最近,我将 Web 技术和开发趋势作为整体研究了一遍,在这里分享一下我的想法和观察结果。首先,让我分享一些我所观察到的可用性和体系结构目前的趋势。可用性的趋势如今,用户体验变得比以往更重要,响应式网页设计(RWD)也成为了网站必备的特性。RWD 能让最终用户在不同尺寸的设备上访问网站,包括手机和平板浏览器。有了 RWD 取代移动网站,我们便无需为移动用户单独开发额外的网站。特别是当我们需要...阅读全文

博文 2015-03-08 04:00:02 蘑蘑茶

golang之flag.String

无论是c语言还是golang语言或是其他语言,启动应用程序时都可以带一些参数,然后系统根据传入的参数进行特点的工作。如:./main -b /home/backupdir -d true 那么如何更好的解析这些参数呢?前两周自己做项目时是通过 range os.Args 来解析这些参数。今天看到了 flag.String 这个方法,感觉之前做的好傻,觉得更应该用golang自带的flag.String来解析参数。 1 package main 2 3 import ( 4 "flag" 5 "fmt" 6 ) 7 8 func main() { 9 backup_dir := flag.String("b", "/home/default_dir", "backup path") 10 de...阅读全文

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