1.言語 - 初期

、golang言語機能

1.ガベージコレクション

  • 自動メモリ回復、開発者は、もはやメモリを管理する必要がありません
  • 開発者は、事業実施に注力精神的な負担を軽減します
  • ただ、新しいメモリ割り当て、NO放出を必要とします

2.ナチュラル同時

  • 言語的レベルのサポートの並行処理から、非常に単純な
  • ゴルーチン、軽量スレッドは、可能ゴルーチンの数千を作成します
  • CSP(逐次プロセスを伝える)モデルベース[ゴルーチン+パイプ]
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のに似パイプ、パイプ
  • 通信チャネルの複数の間ゴルーチン
  • 任意の型をサポートしています
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