、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
}