(2) GO Lang -- 源码结构

标准的Go 代码库中包含了大量的包,并且在安装Go 的时候多数会伴随一起安装。浏 览$GOROOT/src/pkg 目录并且查看那些包会非常有启发。无法对每个包就加以解说,不过下 面的这些值得讨论: fmt 包fmt 实现了格式化的I/O 函数,这与C 的printf 和scanf 类似。格式化短语派生于C 。一些短语(%-序列)这样使用: %v 默认格式的值。当打印结构时,加号(%+v)会增加字段名; %#v Go 样式的值表达; %T 带有类型的Go 样式的值表达; io 这个包提供了原始的...阅读全文

CSDN博客 2013-03-17 18:01 wuhualong1314

Go语言中的数组(array)和数组切片(slice)

在Go语言中,数组长度在定义后就不可更改,在声明时长度可以为一个常量或者一个常量表达式(常量表达式是指在编译期即可计算结果的表达式)。数组的长度是该数组类型的一个内置常量,可以用Go语言的内置函数len()来获取。 数组的长度在定义后无法再次修改;数组是值类型,每次传递都产生一份副本。 初看起来数组切片就像一个指向数组的指针,实际上它拥有自己的数据结构,而不仅仅是一个指针。数组切片的数据结构可以抽象为以下3个变量: 一个指向原生数组的指针 数组切片中元素的个数 数组切片已分配的存储空间 从底层实...阅读全文

博客园 2013-02-17 18:31 ghj1976

从今天起,踏上go语言编程艺术之旅

刚毕业一个月,但工作已经将近一年了。从去年八月份开始到现在,一直在从事java和android的开发,主要是android sdk开发。应公司要求,中途也搞过xmpp和android ndk的开发,还学习过opengls知识。虽然这一年工作的面广,但是感觉真正的收获却甚少,因为在这样的过程自己并没有真正沉淀下来去精通一门技术。在这种需求式的学习中,对很多知识往往是一知半解,没有深究,所以常常也觉得茫然。 一年前就听说过go语言很厉害,但也没有真正去学习和研究。前些日子,初步了解了下go语言,第一...阅读全文

CSDN博客 2014-07-18 15:19 leege100

Go语言并发与并行学习笔记(二)

Go语言并发与并行学习笔记(二) Go语言的并发和并行 不知道你有没有注意到一个现象,还是这段代码,如果我跑在两个goroutines里面的话: var quit chan int = make(chan int) func loop() { for i := 0; i < 10; i++ { fmt.Printf("%d ", i) } quit <- 0 } func main() { // 开两个goroutine跑函数loop, loop函数负责打印10个数 go loop() go l...阅读全文

CSDN博客 2014-03-25 21:54 yangzhengyi68

Go语言并发与并行学习笔记(一)

如果不是我对真正并行的线程的追求,就不会认识到Go有多么的迷人。 Go语言从语言层面上就支持了并发,这与其他语言大不一样,不像以前我们要用Thread库 来新建线程,还要用线程安全的队列库来共享数据。 以下是我入门的学习笔记。 首先,并行!=并发, 两者是不同的,可以参考:http://concur.rspace.googlecode.com/hg/talk/concur.html Go语言的goroutines、信道和死锁 goroutine Go语言中有个概念叫做goroutine, 这类似...阅读全文

CSDN博客 2014-03-25 21:53 yangzhengyi68

go语言windows上使用

1、下载go的zip文件。并且一定要把文件解压到c:\go目录下。 2、配置windows的高级环境变量。包括:GOROOT、GOOS、GOBIN、GOARCH。并且在path变量里面把c:\go\bin加入。以便可以在命令行直接运行go命令。 举例:我的机器: set GOARCH=386 set GOOS=windows set GOROOT=c:\go set GOBIN=%GOROOT%\bin set GOPATH=%GOROOT%;F:\workspace\goSample01; G...阅读全文

CSDN博客 2014-10-24 16:52 jklfjsdj79hiofo

在生成环境中使用 Go 语言两年的总结

在iron.io的生产环境使用Go语言两年后,我想分享我们的经验和感受。我们是第一批在生产环境中使用Go(Go语言)的公司之一,长久以来我们不知道该有怎样的预期,但到目前为止,很棒。 在之前发表的一篇文章从Ruby切换到Go中我谈了一些,但这次将更具细节一些,我们喜欢这门语言以及一路上我们学到的东西。介绍没有特定顺序,按下面这样: 性能表现(Performance)内存占用(Memory)并发性(Concurrency)可靠性(Reliability)部署(Deployment)天赋(Talen...阅读全文

Go vs Erlang

因为 云巴 系统对高并发、低延迟的需求,我们对各个语言、平台做了很多的调研比较工作。这自然就包括致力于开发高并发应用的 Go 和 Erlang。 并发 Go 对高并发的支持通过 goroutine 实现。goroutine 可以理解为轻量级的 线程(thread)。同一个 Go 应用创建的 goroutine 共享地址空间。 Erlang 的高并发通过轻量级 进程(process)实现,每一个进程都有独立的状态记录。 另外,使用 goroutine 要注意,goroutine 运行完毕后,占用的...阅读全文

Tiger's Blog 2014-10-27 Tiger_张虎

Go编程语言简介

go_tutorial Go编程语言简介 Updated Sep 23, 2010 by chaishus...@gmail.com 译者简介Hello,世界分号(Semicolons)编译Echo类型简介申请内存常量I/O包Rotting catsSorting打印输出生成素数Multiplexing 译者 原文:http://golang.org/install.html 翻译:柴树杉 (chaishushan@gmail.com) 翻译:Bian Jiang (borderj@gmail....阅读全文

CSDN博客 2013-11-17 20:19 summerhust

go学习链接

大牛学习Golang的资料整理: http://www.cnblogs.com/ghj1976/category/446360.html Win下Golang开发环境搭建相关文章: Win7下安装go1.1beta1 http://www.cnblogs.com/ghj1976/archive/2013/04/05/3001081.html Sublime Text 2下配置Go语言环境 http://www.cnblogs.com/ghj1976/archive/2013/03/20/2970...阅读全文

CSDN博客 2013-10-08 18:40 huayu0815

用go语言通过FTP库实现web日库自动上传归档

因为平时管理的web服务器都是VM服务器,为节省硬盘空间,一般给虚拟机分配的硬盘空间都比较小,只有8G,因为,保存不了多少日志,所以每天都需要把每台WEB日志转移到一个硬盘比较大的服务器上,然后再使用NBU集中备份,本程序主要使用go语言实现实现将web日志通过FTP自动上传FTP服务器,使用了filepath.Walk遍历日志目录及第三方纯go库“github.com/jlaffaye/ftp”,而日志VM本地存储路径格式是 /var/log/weblog/www.domainName.com...阅读全文

开源中国博客 2014-10-27 09:46 学思

Go语言 使用CGo进行优化

转载自达达的博客 前阵子我利用cgo对游戏内存数据库的数据存储方式做了优化,减少了对象数量。但是程序放到线上环境后出现了段错误,直接导致进程退出,只好临时又把优化的部分去掉,去掉后程序又继续稳定运行了两周。 优化代码撤下来后,我重新整理了代码。整理下来,我觉得对含有字符串字段的表的优化逻辑太过复杂了,并且很难控制边界情况。 这里举个例子: type MyTable struct { Name string } func InsertMyTable(myTable MyTable) { nameL...阅读全文

CSDN博客 2014-04-20 21:05 abv123456789

LiteIDE下设置GOPATH

Mac下安装Go开发环境可以借鉴之前我的博客:Mac下go语言环境的搭建 http://www.cnblogs.com/ghj1976/archive/2013/01/16/2863142.html 首先当前需要先设置GOROOT GOROOT 是Go安装包的根目录。通常是放在$HOME/go,当然也可以是其他位置。比如我这里Mac下默认是安装在/usr/local/go 下面了。 参考:https://code.google.com/p/golang-china/wiki/Install GO...阅读全文

博客园 2013-02-16 14:10 ghj1976

Go语言实现冒泡和快速排序

冒泡和快速排序都属于交换类排序,所谓交换排序是指借助数据元素之间互相交换进行排序的方法。 冒泡排序法 冒泡排序法是一种最简单的交换类排序方法,它是通过相邻数据的交换逐步将线性表变成有序。 冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。 即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。 在第二趟:...阅读全文

博客园 2013-02-15 22:11 ghj1976

Go语言里边的字符串和数组

/*640*60,创建于2013-5-24*/ var cpro_id = "u1290382"; go语言里边的字符串处理和PHP还有java 的处理是不一样的,首先申明字符串和修改字符串 [php] package main import "fmt" var name string //申明一个字符串 var emptyname string = "" //申明一个空字符串 func main() { //申明多个字符串并且赋值 a, b, v := "hello", "word", "wi...阅读全文

Go项目的目录结构

项目目录结构如何组织,一般语言都是没有规定。但Go语言这方面做了规定,这样可以保持一致性 1、一般的,一个Go项目在GOPATH下,会有如下三个目录: |--bin |--pkg |--src 其中,bin存放编译后的可执行文件;pkg存放编译后的包文件;src存放项目源文件。一般,bin和pkg目录可以不创建,go命令会自动创建(如 go install),只需要创建src目录即可。对于pkg目录,曾经有人问:我把Go中的包放入pkg下面,怎么不行啊?他直接把Go包的源文件放入了pkg中。这显...阅读全文

博客园 2014-10-26 10:59 ghgyj

go语言与所谓的包

import后面接的是目录的名字,而不是所谓包的名字,并且如果一个目录下面还有目录的话都必须要写进去,比如: import "MyPackage" import "MyPackage/MyInnerPackage" 在这里讲明白了import后面接的是目录名而不是文件名更不是所谓的包名,那么一个目录下面的文件可以是多个包的吗?不可以 package main import "MyPackage" import "MyPackage/MyInnerPackage" import "OtherPac...阅读全文

安装Go语言开发环境

安装Go语言开发环境实例代码 - 详述Go语言安装所在需要的工作:安装C语言工具,安装Mercurial,更新go到新版本等操作实例。 安装go环境 1、简介 Go是一个开源项目,采用BSD授权协议。 该文档介绍如何获取Go源代码,如何编译,以及如何运行Go程序。 目前有两种方式使用Go语言。这里主要讲述如何使用Go专用的gc系列工具 (6g、8g等)。另一个可选的编译器是 基于gcc后端的 gccgo编译器。关于gccgo的细节清参考安装并使用gccgo编译器 。 Go编译器可以支持三种指令集...阅读全文