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
}
原文地址:https://www.cnblogs.com/hq82/p/11069523.html