Golang 元素值在经过通道传递时会被复制,这个复制是浅复制
发布日期:2021-05-10 08:44:31 浏览次数:16 分类:精选文章

本文共 3303 字,大约阅读时间需要 11 分钟。

Channel���Golang������������������

1. Channel������������

���Golang������Channel��������������������������������������������������������������� g��lange������������������������������������������������Channel���������������������������������������������

������������������������������

package main
import (
"fmt"
)
func main() {
ch := make(chan []int, 3)
s := []int{1, 3, 4}
ch <- s
fmt.Printf("s length is %d, cap is %d\n", len(ch), cap(ch))
fmt.Printf("s address is %p\n", s)
r := <-ch
r[0] = 2
fmt.Printf("s is %#v\n", s)
fmt.Printf("r is %#v\n", r)
fmt.Printf("r address is %p\n", r)
}

���������������

s length is 1, cap is 3
s address is 0xc00000c060
s is []int{2, 3, 4}
r is []int{2, 3, 4}
r address is 0xc00000c080

������������������������Channel������������������������������������������������������������������������������������������Channel������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

2. Channel������������

���Golang������Channel���������������������������������������������������������������Golang������������������������������������������������������������������������������������������

���������������������������������Channel������������������

package main
import (
"fmt"
)
func main() {
ch := make(chan [3]int, 3)
s := [3]int{1, 3, 4}
ch <- s
fmt.Printf("s length is %d, cap is %d\n", len(ch), cap(ch))
fmt.Printf("s address is %p\n", s)
r := <-ch
r[0] = 2
fmt.Printf("s is %#v\n", s)
fmt.Printf("r is %#v\n", r)
fmt.Printf("r address is %p\n", r)
}

���������������

s length is 1, cap is 3
s address is 0xc0000aa000
s is [3]int{1, 3, 4}
r is [3]int{2, 3, 4}
r address is 0xc0000aa040

������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

3.������������������������

���Golang������Channel���������������������������������������������������������������������������������������������������������������������

  • shallow copy������������������������������������������������������������������������������������
  • deep copy���������������������������������������������������������

������Golang���int���float32���string���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

  • ������������������int���float32���������������������������������������
  • ������������������������������������������������������������������������������������������������������������������
  • ������������������������������������������������������������������������������������������������������������������������������

������������������������������������������������������Golang���������������������������������������������������������������������������������������������������������������������

������������������������������������������Golang���Channel������������������������������������������������������������������������������������������������������

上一篇:Go 中切片索引与 Python 中列表索引的差异
下一篇:Go 语言同一个包内函数调用、包名和实际路径最后一个目录不一致问题

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2025年04月27日 14时29分40秒