码迷,mamicode.com
首页 > 其他好文 > 详细

[Go语言]一、入门Hello,World

时间:2014-07-07 22:43:39      阅读:313      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   java   color   文件   

Go简介

 

为什么有了系统编程级别的C/C++以及后来的Java,也有脚本级别的Ruby/Perl/Python语言可用,Google为什么还要发布Go语言?

“我们开发Go,是因为近10年左右开发程序之难让我们有点沮丧”
                                             --首席软件工程师Rob Pike

 

Go完全支持coroutine,即协程,也称为轻量级的线程。多数语言在语法层面不直接支持协程。一些语言或许可以通过第三方库来支持协程,但是功能并不完整。比如仅仅提供协程的创建,

销毁和切换能力。如果在这样的协程中调用一个同步IO,如网络通信/本地文件读写,都会阻塞其他并发的协程。从而无法真正的完成协程本身期望的目标。

        Go在语言层面就支持协程,叫goroutine。Go语言提供的所有系统调用syscall,包括所有同步IO,都会让出CPU给其他goroutine。

运行方式是

func run (args string) {
    //...
}

func main() {
    go run(“go”)
}

 

只需要一个go关键字,就可以实现并发的协程运算,是不是很酷。

Go强调风格的强制统一。public的变量必须大写字母开始,private则以小写字母开始,这样就不用显示写出public和private修饰符了。

同时Go对代码块的起始“{”则有强制性要求。如

if expression {
    // 要求如此
}

if expression
{
    //编译错误
}

这里可以明显看出强制性,在C++/JAVA中,两种风格都允许,明显会带来一些风格的不统一。

Go首创的错误处理也很酷,如下看关键字defer的用法

f,err = os.open(filename)
if err != nil {
    log.Println("open failed")
    return
}

defer f.Close()

这里的defer保证在函数退出时候,不管什么原因引起的异常,都会使得f的资源得到释放。

同时Go还支持多个返回值,虽然动态语言Python也支持。

一个defer就彻底让你放弃java中那些嵌套的try…catch…finally。

Go中不支持运算符和操作符的重载,C++/JAVA中提供的重载虽然解决了OOP部分问题,但是带来复杂性。

Go中放弃了构造函数和析构函数,没有虚函数,也没有了vptr,因此原来OOP中对象的开销都降到最小。GO在Google看来,是实战派作风,而不是学院派。

Go接受函数式编程思想,支持goroutine和通道,支持匿名函数和闭包,可以说,在系统级语言方面,Go是最有开放性的一门语言。

Go编程环境搭建

这里首先直接下载安装包:

http://gopher.qiniudn.com/download/go/go1.3.windows-amd64.zip

解压出其中的go顶级目录,拷贝到C下:C:\go。

配置环境变量到path后,就可以在命令行中看到go版本信息了。

bubuko.com,布布扣

Go的编辑器选择有很多种,这里选择sublime。键入Hello,world,运行程序,结束Go学习的入门第一课。

bubuko.com,布布扣

 

参考书《Go语言编程》:http://www.amazon.cn/s/ref=nb_sb_ss_i_0_6?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&url=search-alias%3Daps&field-keywords=go%E8%AF%AD%E8%A8%80%E7%BC%96%E7%A8%8B&sprefix=Go%E8%AF%AD%E8%A8%80%E7%BC%96%E7%A8%8B%2Caps%2C173&rh=i%3Aaps%2Ck%3Ago%E8%AF%AD%E8%A8%80%E7%BC%96%E7%A8%8B

[Go语言]一、入门Hello,World,布布扣,bubuko.com

[Go语言]一、入门Hello,World

标签:style   blog   http   java   color   文件   

原文地址:http://www.cnblogs.com/crafet/p/3812853.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!