Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
6,816
On Slideshare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
68
Comments
0
Likes
14

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

Transcript

  • 1. Go语言入 Sparkle
  • 2. 大纲1、什么是Go2、为什么我们要学习(使用)Go3、语法特性4、 始使用5、缺点
  • 3. 1、什么是Go
  • 4. 什么是GoGoogle于2009发布TIOBE 2009年度语言目前TIOBE排名50以外(吐槽)系统级语言并发语言
  • 5. ECUGErlang China User GroupEffective Cloud User GroupECUG Con 2011,国内第一场以 Go 语言为主题的盛宴!
  • 6. CERL 是我写的一个 C++ 程序库,取意于:Erlang ForC/C++。但最终其实 CERL 不是一个编程范式类似于Erlang 的东西,而更象是一个雏形版本的 Golang。 ——许式伟
  • 7. 我发现我花了四年时间锤炼自己用 C 语言构建系统的能力,试图找到一个规范,可以更好的编写软件。结果 发现只是对 Go 的模仿。 ——云风
  • 8. 目前状态Go1已经发布(第一个稳定版)
  • 9. 2、为什么我们要学习
  • 10. 只用一 语言的攻城师不
  • 11. 为什么是Go多年Java经验熟悉Python、Ruby、Scala但觉得C/C++困难Go语言让我有机会接近系统
  • 12. Go特性源自C(不是C++)编译速度gc特殊的面向对象简洁又 活的语法
  • 13. 3、语法特性
  • 14. Hello, world!package mainimport "fmt"func main() { fmt.Println("Hello, world!")}
  • 15. deferfunc main() { file := os.Open("hello.txt") defer file.Close() // use file}
  • 16. 错误func main() { file, err := os.Open("hello.txt") if err != nil { return } defer file.Close() // use file}
  • 17. 常func main() { defer func() { if r := recover(); r != nil { fmt.Println("recover", r) } }() someFunc()}func someFunc() { panic("[fail]")}
  • 18. 没有类type Vertex struct { X, Y float64}func (v *Vertex) Abs() float64 { return math.Sqrt(v.X*v.X + v.Y*v.Y)}func main() { v := &Vertex{3, 4} fmt.Println(v.Abs())}
  • 19. 没有继承type Egg struct { weight int}type Animal struct { weight int}type Bird struct { Animal egg Egg}
  • 20. 接口type Abser interface { Abs() float64}type MyFloat float64func (f MyFloat) Abs() float64 { if f < 0 { return float64(-f) } return float64(f)}
  • 21. 并发
  • 22. 为什么不用锁模型锁的粒度不能太大死锁问题编程难度面对越来越多的CPU
  • 23. Scala介绍中提到
  • 24. 类线程行为func main() { go myFunc() go func() { // code }()}
  • 25. 类Actor行为var ch = make(chan int)func myActor() { data := <-ch // use data}func main() { go myActor() ch <- 1}
  • 26. 纤程同步代码 步效果非抢占式单线程实现无线程切换,无锁理论上可以无限个(内存限制)
  • 27. 类纤程行为func myActor() { data := <-ch // some code time.Sleep(100) other := <-otherCh // use data}
  • 28. 4、 始使用
  • 29. 安装(通过源码)$ hg clone -u release https://code.google.com/p/go$ cd go/src$ ./all.bash
  • 30. 安装http://code.google.com/p/go/downloads/list有Linux Mac FreeBSD Windows的二进制版brew install gohomebrew for MacGAE for Go
  • 31. IDE暂无完整IDE
  • 32. 可以不需要IDE,因为Go构建包管理代码格式化通过gocode提供代码提示
  • 33. 编辑器EmacsVimSublime甚至Notepad
  • 34. Sublime+GoSublime +gocode通过Go命令进行包管理和构建语法加亮代码提示保存时自动格式化代码
  • 35. Go命令go get 安装第三方类库go build 构建go run hello.go 编译并且运行
  • 36. GAE for Go内置Go,直接使用保存自动编译不支持Windows直接 始Web 发
  • 37. 学习资源http://tour.golang.org/http://golang.org/doc/http://code.google.com/p/golang-china/http://www.mikespook.com/https://github.com/wonderfo/wonderfogo/wiki许式伟《Go语言编程》
  • 38. 5、缺点
  • 39. 曾经的缺点构建工具IDEwindows支持
  • 40. 缺点第三方类库gc多CPU支持动态链接
  • 41. 谢谢weibo&twitter: sparklezengemail: popeast@gmail.comwebsite: http://weavesky.com