Go语言简介

Go语言简介 - Go语言是由Google开发的一个开源项目,目的之一为了提高开发人员的编程效率。 Go语言简介 Go语言是由Google开发的一个开源项目,目的之一为了提高开发人员的编程效率。 Go语言语法灵活、简洁、清晰、高效。它对的并发特性可以方便地用于多核处理器和网络开发,同时灵活新颖的类型系统可以方便地编写模块化的系统。go可以快速编译, 同时具有垃圾内存自动回收功能,并且还支持运行时反射。Go是一个高效、静态类型, 但是又具有解释语言的动态类型特征的系统级语法。 下面是用go编写的"...阅读全文

Golang项目目录结构组织

其实golang的工程管理还是挺简单的,完全使用目录结构还有package名来推导工程结构和构建顺序。 当然,首先要说的是环境变量$GOPATH,项目构建全靠它。这么说吧,想要构建一个项目,就要将这个项目添加到$GOPATH中,多个项目用";"分隔。 Golang项目目录下一般有三个子目录: src存放源代码 pkg编译后生成的文件 bin编译后生成的可执行文件 我们重点要关注的其实就是src文件夹中的目录结构。 举个例子比啥都强,目录结构如下: <proj> |--<src> |--<a> |...阅读全文

走进 Google 的 Go 语言

摘要:本文整理自Google首席工程师Rob Pike的演讲Slide,主要讲述的了Go的部分设计原理和初衷,也有提到Go语言在Google内外的应用现状。但本文的目的更多的是关于软件工程而不是编程语言的设计,更准确地说是如何设计编程语言来帮助软件工程。 序言:关于Go Go语言是一个开源、并发、高效、简单、有趣(但对某些人来说可能很无聊)的编程语言,支 持垃圾回收(GC),具有很好的可伸缩性。Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson...阅读全文

CSDN博客 2012-11-02 16:19 cometwo

Go中的make和new的区别

make用于内建类型(map、slice 和channel)的内存分配。new用于各种类型的内存分配。 内建函数new本质上说跟其它语言中的同名函数功能一样:new(T)分配了零值填充的T类型的内存空间,并且返回其地址,即一个*T类型的值。用Go的术语说,它返回了一个指针,指向新分配的类型T的零值。有一点非常重要:new返回指针。 内建函数make(T, args)与new(T)有着不同的功能,make只能创建slice、map和channel,并且返回一个有初始值(非零)的T类型,而不是*T。...阅读全文

博客园 2013-02-12 20:08 ghj1976

Go的异常处理 defer, panic, recover

Go语言追求简洁优雅,所以,Go语言不支持传统的 try…catch…finally 这种异常,因为Go语言的设计者们认为,将异常与控制结构混在一起会很容易使得代码变得混乱。因为开发者很容易滥用异常,甚至一个小小的错误都抛出一个异常。在Go语言中,使用多值返回来返回错误。不要用异常代替错误,更不要用来控制流程。在极个别的情况下,也就是说,遇到真正的异常的情况下(比如除数为0了)。才使用Go中引入的Exception处理:defer, panic, recover。 这几个异常的使用场景可以这么简...阅读全文

博客园 2013-02-11 20:36 ghj1976

Go Programming Language

Google 今天发布了自制的变成语言,叫做Go,官方网站如下: http://golang.org/ 主要参与者名单繁星满天: Ken Thompson (Unix之父之一…好拗口) Rob Pike (Unix团队成员, 著书《 The Practice of Programming 》and《 The Unix Programming Environment》) 等等 Logo图标 (一只 Gopher, 金花鼠,作者 Renée French) 为什么Google要做自己的编程语言呢? ...阅读全文

CSDN博客 2009-11-12 13:24 yangdelong

Go语言中的闭包

闭包是什么,闭包是由函数及其相关的引用环境组合而成的实体(即:闭包=函数+引用环境)。 有关这部分可以参看:http://www.cnblogs.com/ghj1976/archive/2013/02/08/2909364.html 闭包包含着外部的环境变量值,但这个环境变量值并不像匿名函数那样作为参数副本,而是实实在在在的引用(或者指针,反正一个意思),当外部变量变化时,闭包能使用的值自然也就变化了。 根据这个原理,下面罗列的几个闭包场景为何计算值是对应的值就很清楚了。 下面例子来自: htt...阅读全文

博客园 2013-02-08 22:06 ghj1976

从零开始学GO语言(1)——hellow world

我是一个前端工程师,近来老大发邮件让我们调研go语言,而我近来在等待联调,事儿不是很多,所以开始学习GO语言,和学习所有语言一样,第一个程序肯定是输出“hello world”。下面讲讲我的过程。 我的电脑的系统是ubuntu 12, 所以先安装GO语言的编译器,直接sudo apt-get install gccgo就好了。 然后新建文件 hello,参照网上事例,写如下代码: package main import fmt "fmt" func main(){ fmt.Printf("hel...阅读全文

CSDN博客 2013-08-22 14:13 xiunen

Go中的函数一些有趣的功能

Go中的函数 函数是Go里面的核心设计,它通过关键字func来申明,他的格式如下func funcname(input1 type1, input2 type2) (output1 type1, output2 type2) { //这里是处理逻辑代码 //返回多个值 return value1, value2} 函数有以下特征: 关键字func用来申明一个函数funcname,匿名函数可以没有funcname。 函数可以有一个或者多个参数,每个参数后面带有类型,通过,分隔 函数可以返回多个值 ...阅读全文

博客园 2013-02-08 18:20 ghj1976

Mac下Go语言环境的搭建

go语言运行包安装 下载地址: https://code.google.com/p/go/downloads/list 我下载的是:go1.0.3 Mac OS X (x86 64-bit) Signed PKG installer go1.0.3.darwin-amd64-signed.pkg 下载完成后直接安装。运行包自动安装在 /usr/local/go 中,这样在命令终端就可以运行go命令了。 这时候在命令行输入 go,会看到下面信息: cybercarematoMacBook-Pro:...阅读全文

博客园 2013-01-16 17:35 ghj1976

GO语言中的面向对象与接口

GO语言为我们提供了轻量级的面向对象模式,但是不同于JAVA和C++,没有继承这个概念,甚至找不到构造(构析)函数的影子,相对于重量级的面向对象语言,GO语言的面向对象似乎更像硬是用C语言的指针来实现OO。 首先,介绍一下最基本的对象声明,和C语言极为类似: type object struct { some_var int other_var string } 里面的变量还可以用指针: type man struct { name string id int } var woman struc...阅读全文

CSDN博客 2010-09-15 18:34 greatliutao

Go语言近况

Go语言是Google公司的实验性语言,以BSD协议开放源代码。Go语言在Inferno操作系统相关的研究工作基础上开发,最初由Rob Pike等Google工程师在2007年9月启动设计工作,在2009年11月正式对外发布。 Go将动态语言易于编写的特性和静态语言的高效性相结合,具备良好的易用性和极佳的执行效率。Go语言最初定位于网络服务器、存储系统和数据库的程序设计,同时在语言中包含并发构造体,以方便的帮助开发者创建并行任务。Go语言具有效率极高的编译器,目前Go编译器能在Linux、Fre...阅读全文

CSDN博客 2010-08-27 10:33 justpub

Ready? Go! 下篇:多核并起

Google于2009年11月发布了Go编程语言,旨在同时具备C语言的效率和Python的简便。今年3月,Go开发组正式发布了Go语言的第一个稳定发行版:Go version 1,简称Go 1。这意味着Go语言本身和它的标准库已经稳定下来,开发者现在可以将其作为一个稳定的开发平台,构建自己的应用。我们用两篇文章介绍Go语言的特性和应用,本文是其中的第二篇。 并行和goroutine 然而,处理器技术的发展指出,比起[掩盖了各种并行结构的]单处理器,由多个类似的处理器(各自包含自己的存储单元)组成...阅读全文

CSDN博客 2014-06-06 20:28 codemanship

Go 语言教程实战

安装在线教程 由于墙,golang.org 国内无法访问,其在线教程也一样 tutorial.golang.org http://go-tour-zh.appspot.com/ 可以在本机运行, 先安装Go 编译器 http://code.google.com/p/go/downloads/list 然后安装教程 go get code.google.com/p/go-tour/gotour 或者中文的 go get bitbucket.org/mikespook/go-tour-zh/goto...阅读全文

CSDN博客 2012-12-09 14:49 mebusw

我为什么放弃Go语言

转自:http://blog.csdn.net/liigo 有好几次,当我想起来的时候,总是会问自己:我为什么要放弃Go语言?这个决定是正确的吗?是明智和理性的吗?其实我一直在认真思考这个问题。 开门见山地说,我当初放弃Go语言(golang),就是因为两个“不爽”:第一,对Go语言本身不爽;第二,对Go语言社区里的某些人不爽。毫无疑问,这是非常主观的结论。但是我有足够详实的客观的论据,支撑这个看似主观的结论。 第0节:我的Go语言经历 先说说我的经历吧,以避免被无缘无故地当作Go语言的低级黑。...阅读全文

CSDN博客 2014-04-21 21:54 u012860063

初读谷歌自家的语言之作------Go语言和Dart语言

Go语言是一个新语言,截至目前为止,第一版正式版还没有发布。Go语言的设计者是Robert Griesemer, Rob Pike和Ken Thompson,当年设计C和Unix,后来的Plan9团队中的人 。Go语言的设计理念很明确,就是将动态类型语言的编程容易度和静态类型语言的安全效率结合起来。深入了解Go语言的发展历史以及完整的目标,请参考Go语言 FAQ。 Go语言有很浓厚的C的遗风,尽量屏蔽C++和Java的影响,比如没有独立的OO体系(并不是说不能OO),一切以struct为中心,没...阅读全文

CSDN博客 2013-11-28 10:12 a4614181

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

Go语言并发与并行学习笔记(三) Go语言并发的设计模式和应用场景 以下设计模式和应用场景来自Google IO上的关于Goroutine的PPT:https://talks.golang.org/2012/concurrency.slide 本文的示例代码在: https://github.com/hit9/Go-patterns-with-channel 生成器 在Python中我们可以使用yield关键字来让一个函数成为生成器,在Go中我们可以使用信道来制造生成器(一种lazy load类...阅读全文

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