如何将go通道值存储到其他数据类型(字符串,字节[])中,并将其重新分配给其他go通道

如何将go通道值存储到其他数据类型(字符串,字节[])中,并将其重新分配给其他go通道,go,Go,//目标-->将str(或某些字节[])转换为通道变量newpipe。 在制作xml时,我必须将数据从一个进程传输到另一个进程。 Xml marshall不支持chan类型也不能与接口{}一起使用 然后在从其他进程接收到响应xml后,将值分配给newpipe,并使用newpipe进行通道通信 func main() { mypipe := make(chan int) fmt.Printf("My pipe addr %p \n", mypipe) str := fmt.

//目标-->将str(或某些字节[])转换为通道变量newpipe。 在制作xml时,我必须将数据从一个进程传输到另一个进程。 Xml marshall不支持chan类型也不能与接口{}一起使用 然后在从其他进程接收到响应xml后,将值分配给newpipe,并使用newpipe进行通道通信

func main() {
    mypipe := make(chan int)
    fmt.Printf("My pipe addr %p \n", mypipe)
    str := fmt.Sprintf("%p", mypipe) //way to convert mypipe to byte[]
    var newpipe chan int
}

我正在寻找各种类型的转换一天,但没有一个与chan类型工作

下面的代码将一个传入字符串转换为一个传出字节片。希望这就是你想要的:

package main

import "fmt"

func stringToByteSlice(sc chan string, bc chan []byte) {
    defer close(bc)
    for s := range sc {
        bc <- []byte(s)
    }
}

func main() {
    strings := []string{"foo", "bar", "baz", "bat"}
    byteSlices := [][]byte{}
    sc := make(chan string)
    bc := make(chan []byte)
    go func() {
        defer close(sc)
        for _, s := range strings {
            sc <- s
        }
    }()
    go stringToByteSlice(sc, bc)
    for b := range bc {
        byteSlices = append(byteSlices, b)
    }
    fmt.Printf("%v\n", byteSlices)
}
主程序包
输入“fmt”
func stringToByteSlice(sc chan字符串,bc chan[]字节){
延迟关闭(bc)
对于s:=范围sc{

bc我觉得你想得太多了,你到底想做什么?那不行,你要么1.用1“开始”处理rabbitmq/子进程或使用多个go进程并使用套接字的进程。@据我所知,有人建议每个实例都应该使用套接字进行通信,以便与其他子系统进行通信。但请解释为什么我的方法不起作用。在特定进程的内存空间中分配了一个通道,这是您无法做到的在进程之间共享。让我们来看看我的目标是让任何类型的通道(字符串,[]字节)现在作为通道返回内存地址。将该地址存储到字符串或[]字节。创建另一个相同类型的通道(字符串,[]字节),现在将内存地址分配给该通道。@user2383973可以这样做(我认为)使用
unsafe
reflect
软件包,但它基本上消除了Go的类型安全性。请看一看。我猜您是从错误的角度来处理这个问题的。请看一看。