1. Go语言—初始

一、golang语言特性

1. 垃圾回收

  • 内存自动回收,再也不需要开发人员管理内存
  • 开发人员专注业务实现,降低了心智负担
  • 只需要new分配内存,不需要释放

2. 天然并发

  • 从语言层面支持并发,非常简单
  • goroutine,轻量级线程,创建成千上万个goroutine成为可能
  • 基于CSP(Communicating Sequential Process)模型实现 [goroutine + pipe]
package main

func test_goroute(a int, b int) int {
    var test_sum int
    test_sum = a + b
    return test_sum
}

func main(){
    go test_goroute(1,2)
}
package main

import "fmt"

func test_goroute(a int) {
    fmt.Println(a)
}

func main() {
    for i := 1; i < 100; i++ {
        go test_goroute(i)
    }

}

3. 管道

  • 管道,类似linux中的pipe
  • 多个goroutine之间通过channel进行通信
  • 支持任何类型
func main() {
    // make开辟一个内存,chan为长度为3整型管道
    pipe := make(chan int, 3)
    // 向管道填值
    pipe <- 2
    pipe <- 2
    pipe <- 2
    fmt.Println(len(pipe))
    var t int
    // 取值
    t =<- pipe
    fmt.Println(t)
}
// 通过管道求和
package main

import (
    "time"
    "fmt"
)

func add(a int, b int, c chan int) {
    sum := a + b
    time.Sleep(3*time.Second)
    c <- sum
}

func main() {
    var pipe chan int
    pipe = make(chan int, 1)
    go add(1,2,pipe)
    sum := <- pipe
    fmt.Println(sum)
}

4. 多返回值

  • 一个函数返回多个值
func calc(a int, b int) (int, int){
    sum := a + b
    avg := (a+b)/2
    return sum, avg
}

猜你喜欢

转载自www.cnblogs.com/hq82/p/11069523.html