Rumah > pembangunan bahagian belakang > Golang > Adakah Saluran Lulus Nilai atau Rujukan dalam Go?

Adakah Saluran Lulus Nilai atau Rujukan dalam Go?

Barbara Streisand
Lepaskan: 2024-11-25 22:30:12
asal
963 orang telah melayarinya

Are Channels Passed by Value or Reference in Go?

Adakah Saluran Lulus Rujukan secara Lalai?

Dalam Go, fungsi terbina dalam membuat membuat contoh hirisan, peta dan saluran . Jenis ini tidak diluluskan secara langsung melalui rujukan, tetapi secara teknikalnya berkelakuan sedemikian kerana peruntukan memori pada timbunan semasa pemulaannya.

Contoh saluran berikut menunjukkan tingkah laku ini:

package main

import "fmt"

func sum(a []int, c chan int) {
    sum := 0
    for _, v := range a {
        sum += v
    }
    c <- sum
}

func main() {
    a := []int{7, 2, 8, -9, 4, 0}

    c := make(chan int)
    go sum(a[:len(a)/2], c)
    go sum(a[len(a)/2:], c)
    x, y := <-c, <-c

    fmt.Println(x, y, x+y)
}
Salin selepas log masuk

Dalam contoh ini, saluran c dimulakan menggunakan make, mencipta gelagat seperti rujukan. Sebarang perubahan yang dibuat kepada c dalam fungsi jumlah berterusan selepas fungsi ditamatkan.

Tingkah laku ini diterangkan selanjutnya dalam spesifikasi Go:

Fungsi terbina dalam membuat mengambil jenis T, yang mesti menjadi kepingan, peta atau jenis saluran, secara pilihan diikuti dengan senarai ungkapan khusus jenis. Ia mengembalikan nilai jenis T (bukan *T). Memori dimulakan seperti yang diterangkan dalam bahagian pada permulaan nilai.

因此,切片、映射和通道可以被视为引用类型,尽管它们在技术上是按传传递的。这使得它们可以传递给函数并允许写入或读取,类似于指钻的。

Atas ialah kandungan terperinci Adakah Saluran Lulus Nilai atau Rujukan dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan