首页 > PHP > Go语言特性介绍

Go语言特性介绍

Go语言是google推出的一个静态编译型语言,目标是取代C、C++、Java作为系统开发的语言。开发者很多都是来自贝尔实验室的大神。Go语言包含了很多非常酷的语言特性,值得尝试。

目前Google、盛大、金山、百度等公司已经开始使用Go语言开发系统模块了。本文重点介绍下Go语言区别于一般语言的特性。其他语言,比如内置数据结构,内存管理,闭包,反射等共有的特性就不说了,Go语言全部都有。
1、语言级别的原生并发机制:goroutine
C/C++、java C#等语言都有并发的库,一般都是对操作系统的线程或进程库做封装,使用很不方便。
比如Pthread线程。
Go语言内建了并发机制,使用非常简单。Go语言会自己调度goroutine。goroutine的实现也很高效,可以同时开启几十万个goroutine,而且goroutine之间互相切换成本很低。
  1. func abc(s sting){
  2.      time.Sleep(1);
  3.      fmt.Println(s);
  4. }
  5. //普通的串行调用
  6. abc(“hello”)
  7. //Go语言并行调用
  8. go abc(“hello”)

Go语言还提供了远程RPC调用,执行go func() 时甚至可以是分布式调用的。

2、语言级别的管道通信机制:channel
大部分语言都是用共享内存方式进行通信,而Go语言完全使用消息传递来进行通信,安全高效无锁。
channel可以干各种事情,用来做消息传递,管道,缓冲区,mutex等等,还可以配合使用select语法。
  1. ch := make(chan int, 1000)
  2. go func(){
  3.     time.Sleep(1e9)
  4.     ch <- 999  //写入数据
  5. }
  6. num = <- ch //读数据

chan还可以当成参数传递。Go语言还提供了netchan,可以跨越网络实现消息传递。

3、语言级别的延迟执行特性:defer
比如连接mysql,调用完成后,需要关闭连接一般语言要很小心地考虑加在什么地方。如何处理好异常,比如Java中复杂的final语法。Go语言可以非常轻松的实现,只需要在开始的时候加defer,具体什么时间调用,Go语言会帮你处理。
  1. db.Connect(host, port, db)
  2. defer db.Close()
  3. …//读取数据库

4、语言级别的多返回值特性

C/C++、Java、PHP之类语言想要return多个值,需要很复杂的处理。Go语言很简单,语言天然支持。
  1. ret1, ret2 = func1()
  2. func func1()(ret1 int, ret2 int){
  3.    ret1 := 1
  4.    ret2 := 2
  5.    return ret1, ret2
  6. }

5、Go语言不用写 ;结束符

6、Go语言通过首字母大小写来控制public、private

7、Go语言可以跟C语言无缝结合
分类: PHP 标签: