Go Performance Tales
Go Performance Tales This entry is cross-posted on the datadog blog. If you want to learn more about Datadog or how we deal with the mountain of data we receive, check it out! The last few months I've had the pleasure of working on a new bit of intak...阅读全文
Go by Example: Arrays
Go语言的数组是一个定长的序列,数组包含的元素的类型相同。 package main import "fmt" func main() { // 这里我们创建了一个具有5个元素的整型(int)数组 // 元素的数据类型和数组长度都是数组类型的一部分 // 默认情况下,数组元素都是零值。 // 对于整数,零值就是0 var a [5]int fmt.Println("emp:", a) // 我们可以使用索引值(index)来设置数组元素的值,就像这样"array[index] = value" ...阅读全文
go IDE : Intellij IDEA + Grab Go plugin
E文好的直接看:http://webapp.org.ua/dev/intellij-idea-and-go-plugin/ 下载go..... 装好插件和IDEA以及go后,需要设置GO的环境变量: 修改 /etc/environment 添加(根据实际情况做修改) GOROOT="/home/jackal/Software/go" GOPATH="/home/jackal/Software/go" 然后注销重新登陆,使环境变量生效阅读全文
go “静态目录服务” http.FileServer
参照手册http://godoc.golangtc.com/pkg/net/http/#FileServer 里面给了Example: http.Handle("/", http.FileServer(http.Dir("/tmp"))) 这个是对目录提供静态映射服务,如果是单个文件 http.HandleFunc("/static/", func(w http.ResponseWriter, r *http.Request) { http.ServeFile(w, r, r.URL.Path[...阅读全文
go lang初试之hello world
第一个go lang程序——hello world package main import "fmt" func main(){ p("rocky") } /* block comment */ func p(name string){ fmt.Println("Hello," + name) } // single line comment // func p(){ // fmt.Println("Hello world!") // } 一些简单的语法特性 上面的简单的代码,用到了go lan...阅读全文
Go语言设计模式实践:组合(Composite)
关于本系列 这个系列首先是关于Go语言实践的。在项目中实际使用Go语言也有段时间了,一个体会就是不论是官方文档、图书还是网络资料,关于Go语言惯用法(idiom)的介绍都比较少,基本只能靠看标准库源代码自己琢磨,所以我特别想在这方面有一些收集和总结。 然后这个系列也是关于设计模式的。虽然Go语言不是一门面向对象编程语言,但是很多面向对象设计模式所要解决的问题是在程序设计中客观存在的。不管用什么语言,总是要面对和解决这些问题的,只是解决的思路和途径会有所不同。所以我想就以经典的设计模式作为切入点来...阅读全文
Go学习笔记之:数组
数组是一个具有相同数据类型的元素组成的固定长度的有序集合。 在Go语言中,数组是值类型,长度是类型的组成部分,也就是说"[10]int"和“[20]int”是完全不同的两种数组类型。 同类型的两个数组支持"=="和"!="比较,但是不能比较大小。 数组作为参数时,函数内部不改变数组内部的值,除非是传入数组的指针。 数组的指针:*[3]int 指针数组:[2]*int 示例1: package main import "fmt" func main() { // 这里我们创建了一个具有5个元素的整...阅读全文
Go学习笔记之:切片
切片是Go语言的关键类型之一,它提供了比数组更多的功能。 示例1: package main import "fmt" func main() { // 和数组不同的是,切片的长度是可变的。 // 我们可以使用内置函数make来创建一个长度不为零的切片 // 这里我们创建了一个长度为3,存储字符串的切片,切片元素 // 默认为零值,对于字符串就是""。 s := make([]string, 3) fmt.Println("emp:", s) // 可以使用和数组一样的方法来设置元素值或获取元素...阅读全文
Go学习笔记之:for循环
for循环是Go语言唯一的循环结构。这里有三个基本的for循环类型。 package main import "fmt" func main() { // 最基本的一种,单一条件循环 // 这个可以代替其他语言的while循环 i := 1 for i <= 3 { fmt.Println(i) i = i + 1 } // 经典的循环条件初始化/条件判断/循环后条件变化 for j := 7; j <= 9; j++ { fmt.Println(j) } // 无条件的for循环是死循环,除非...阅读全文
Go学习笔记之:变量
Go是静态类型语言,变量是有明确类型的。编译器会检查函数调用中,变量类型的正确性。 使用var关键字来定义变量。 Go 的基本类型有: bool string int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr byte // uint8 的别名 rune // int32 的别名 代表一个Unicode码 float32 float64 complex64 complex128 看看下面的例子 package m...阅读全文
Go学习笔记之:常量
Go支持定义字符常量,字符串常量,布尔型常量和数值常量。 使用const关键字来定义常量。 package main import "fmt" import "math" // "const" 关键字用来定义常量 const s string = "constant" func main() { fmt.Println(s) // "const"关键字可以出现在任何"var"关键字出现的地方 // 区别是常量必须有初始值 const n = 500000000 // 常量表达式可以执行任意精度数...阅读全文
一百行golng代码写一个静态文件服务器
/*640*60,创建于2013-5-24*/ var cpro_id = "u1290382"; 一直讲golang标准库,不仅大家看烦了,我自己写的都比较难受了,所以写一个简单的静态文件服务器,里边有上传下载,和简单的html,你可以根据你自己的需求来修改~~ 包含功能 静态文件模板 文件上传 文件查看和下载 使用的包 import ( "fmt" "html/template" "io" "net/http" "os" "path/filepath" "regexp" "strconv" ...阅读全文
golang讲解(go语言)标准库分析之strings结束篇
/*640*60,创建于2013-5-24*/ var cpro_id = "u1290382"; 今天我们完结了这个strings的包,其实我们就剩下了type Reader和type Replacer这个我们之间讲过io的包,这样大家理解起来就比较省劲了! (1)func NewReader(s string) *Reader通过读取一个字符串之后返回Reader对象,然后实现io.Reader, io.ReaderAt, io.Seeker, io.ByteScanner, 和io.Run...阅读全文
GO语言介绍及视频教程
其中包含GO语言基础教程,和开发工具。 http://pan.baidu.com/s/1eQ1fd3W 1简介 Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软件开发的难度令人沮丧。 Go是谷歌2009发布的第二款编程语言。2009年7月份,谷歌曾发布了Simple语言,它是用来开发Android应用的一种BASIC语言. 北京时间2010年1月10日,Go语言摘...阅读全文
go lang初试之安装
早就听说了go lang的大名,最近有时间,下定决心研究一下。 目前正在看的书是七牛的许式伟等编写的《Go语言编程》。 书写的很好:在最开始就清楚地写明了go lang出现的意义,以及一些语言方面一些好的特性; 下面的内容基本是该书内容的摘要,方便有需要的人直接使用。 1. go env安装和配置 go lang的官网(https://golang.org)就算用了梯子,访问仍然挺慢的。不过国内有个爱好者的站点(http://golangtc.com/),相关资源在这个国内站上也可以下载到。 (...阅读全文
build-web-application-with-golang笔记
2.2 Go基础 1. :=这个符号直接取代了var和type,这种形式叫做简短声明。不过它有一个限制,那就是它只能用在函数内部;在函数外部使用则会无法编译通过,所以一般用var方式来定义全局变量。 2. rune是int32的别称,byte是uint8的别称。不同类型的变量之间不允许互相赋值或操作,不然会在编译时引起编译器报错。 3. 尽管int的长度是32 bit, 但int 与 int32并不可以互用。浮点数的类型有float32和float64两种(没有float类型),默认是float...阅读全文
Go在谷歌:以软件工程为目的的语言设计
Go在谷歌:以软件工程为目的的语言设计 1. 摘要 (本文是根据Rob Pike于2012年10月25日在Tucson, Arizona举行的SPLASH 2012大会上所做的主题演讲进行修改后所撰写的。) 针对我们在Google公司内开发软件基础设施时遇到的一些问题,我们于2007年末构思出Go编程语言。当今的计算领域同创建如今所使用的编程语言(使用最多的有C++、Java和Python)时的环境几乎没什么关系了。由多核处理器、系统的网络化、大规模计算机集群和Web编程模型带来的编程问题都是以...阅读全文
golang指针的使用,类似C语言
src\model\model.go package model import "strconv" type User struct { username string password string age int32 } func (this *User) String() string { return "username: " + this.username + " password: " + this.password + " age:" + strconv.Itoa(int(this...阅读全文
Go by Example: If/Else
Go语言中的If和else的分支结构非常清晰明了。 package main import "fmt" func main() { // 这是一个基本的例子 if 7%2 == 0 { fmt.Println("7 is even") } else { fmt.Println("7 is odd") } // 只有if条件的情况 if 8%4 == 0 { fmt.Println("8 is divisible by 4") } // if条件可以包含一个初始化表达式,这个表达式中的变量 // ...阅读全文