1 丰富的内置类型

2 函数多返回值

3 Go的错误处理 :   Go语言引入了3个关键字用于标准的错误处理流程,这3个关键字分别为defer、 panic和 recover

4 在Go语言中,所有的函数也是值类型: 可以作为参数传递。

5 类型和接口

Go语言的类型定义非常接近于C语言中的结构(struct),甚至直接沿用了struct关键字。相 
比而言, Go语言并没有直接沿袭C++和Java的传统去设计一个超级复杂的类型系统,不支持继承 
和重载,而只是支持了最基本的类型组合功能.

     它还引入了一个无比强大的“非侵入式” 接口的概念,让开发者从以往对C++和Java开发中的接口管理问题中解脱出来.

  在C++和java中,在实现一个接口之前必须先定义该接口,并且将类型和接口紧密绑定,即接口的修改 
会影响到所有实现了该接口的类型,而Go语言的接口体系则避免了这类问题,比较松散的对应关系可以大幅降低因为接 
口调整而导致的大量代码调整工作。

6 并发编程

  通过在函数调用前使用关键字go,我们即可让该函数以goroutine方式执行。 goroutine是一种 
比线程更加轻盈、更省资源的协程。 Go语言通过系统的线程来多路派遣这些函数的执行,使得 
每个用go关键字执行的函数可以运行成为一个单位协程。当一个协程阻塞的时候,调度器就会自 
动把其他协程安排到另外的线程中去执行,从而实现了程序无等待并行化运行。而且调度的开销 
非常小,一颗CPU调度的规模不下于每秒百万次,这使得我们能够创建大量的goroutine,从而可 
以很轻松地编写高并发程序,达到我们想要的目的。

  Go语言实现了CSP(通信顺序进程, Communicating Sequential Process)模型来作为goroutine 
间的推荐通信方式。在CSP模型中,一个并发系统由若干并行运行的顺序进程组成,每个进程不 
能对其他进程的变量赋值。进程之间只能通过一对通信原语实现协作。 Go语言用channel(通道) 
这个概念来轻巧地实现了CSP模型。 channel的使用方式比较接近Unix系统中的管道(pipe)概念, 
可以方便地进行跨goroutine的通信。 
另外,由于一个进程内创建的所有goroutine运行在同一个内存地址空间中,因此如果不同的 
goroutine不得不去访问共享的内存变量,访问前应该先获取相应的读写锁。 Go语言标准库中的 
sync包提供了完备的读写锁功能。

// mainfile
package main import (
"fmt"
) func sum(values []int, resultChan chan int) {
sum :=
for _, value := range values {
sum += value
}
resultChan <- sum // 将计算结果发送到channel中
}
func main() {
values := []int{, , , , , , , , , }
resultChan := make(chan int, )
go sum(values[:len(values)/], resultChan)
go sum(values[len(values)/:], resultChan)
sum1, sum2 := <-resultChan, <-resultChan // 接收结果
fmt.Println("Result:", sum1, sum2, sum1+sum2)
}

7 Go的 反射

8 GO语言交互性

最新文章

  1. 安装ArcGIS Desktop 9.3
  2. 对称密码-DES和3DES
  3. 解决为什么每次打开Eclipse新的workspace需要更新nexus-maven-repository-index问题
  4. Theano2.1.7-基础知识之设置的配置和编译模式
  5. Android nDrawer
  6. user32.dll
  7. MFC主窗口架构模型
  8. 14.1.3 检查InnoDB 可用性:
  9. nodejs教程
  10. SQL学习之使用视图
  11. flex 用footerdatagrid做列的汇总合计
  12. jxls导出EXCEL模板
  13. 移动端APP CSS Reset及注意事项CSS重置
  14. UWP 唤起应用商城,邮件
  15. Chromium被用于Microsoft Edge与ChakraCore的未来【译】
  16. Mysql索引基础原理
  17. Oracle多表关联如何更新多个字段
  18. 另类之将ipython notebook嵌入blog方法
  19. thinkphp 5.0 lnmp环境下 无法访问,报错500(public目录)
  20. Idea Spring-boot gradle lombok

热门文章

  1. php file文件操作函数
  2. java程序员常用的八个工具
  3. OC基础:内存(内存管理) 分类: ios学习 OC 2015-06-25 16:50 73人阅读 评论(0) 收藏
  4. 分析苹果代充产业链 汇率差+退款造就三线城市千万富翁‍_中新游戏研究_Joynews中新游戏
  5. 【微信小程序推广营销】教你微信小程序SEO优化,让你的小程序快人一步抢占先机
  6. linux-*.filetype.bz2 unzip
  7. test20181006 投票
  8. 转-java编译时error: illegal character &#39;\ufeff&#39; 的解决办法-https://blog.csdn.net/t518vs20s/article/details/80833061
  9. MySQL--修改普通表为自增表
  10. BAT编程