gpt4 book ai didi

go - 在 golang 中声明指向 channel 的指针有什么影响吗?

转载 作者:IT王子 更新时间:2023-10-29 01:46:17 26 4
gpt4 key购买 nike

type Stuff {
ch chan int
}

对比

type Stuff {
ch *chan int
}

我知道 channel 是引用类型,因此在由函数返回或作为参数返回时是可变的。什么时候 channel 地址在现实世界的程序中有用?

最佳答案

也许您的 channel 用于轮转日志,您想要轮转(交换)日志;交换 channel (日志)指针而不是值。

例如,

package main

import "fmt"

func swapPtr(a, b *chan string) {
*a, *b = *b, *a
}

func swapVal(a, b chan string) {
a, b = b, a
}

func main() {
{
a, b := make(chan string, 1), make(chan string, 1)
a <- "x"
b <- "y"
swapPtr(&a, &b)
fmt.Println("swapped")
fmt.Println(<-a, <-b)
}
{
a, b := make(chan string, 1), make(chan string, 1)
a <- "x"
b <- "y"
swapVal(a, b)
fmt.Println("not swapped")
fmt.Println(<-a, <-b)
}
}

输出:

swapped
y x
not swapped
x y

关于go - 在 golang 中声明指向 channel 的指针有什么影响吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22885749/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com