Golang
- 6. CERL 是我写的一个 C++ 程序库,取意于:Erlang For
C/C++。但最终其实 CERL 不是一个编程范式类似于
Erlang 的东西,而更象是一个雏形版本的 Golang。
——许式伟
- 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 float64
func (f MyFloat) Abs() float64 {
if f < 0 {
return float64(-f)
}
return float64(f)
}
- 25. 类Actor行为
var ch = make(chan int)
func myActor() {
data := <-ch
// use data
}
func main() {
go myActor()
ch <- 1
}
- 26. 纤程
同步代码 步效果
非抢占式
单线程实现
无线程切换,无锁
理论上可以无限个(内存限制)
Editor's Notes
- \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