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

时间:2014-05-03 01:15:38

标签: go

//目标 - >将str(或某个byte [])转换为通道变量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类型

1 个答案:

答案 0 :(得分:0)

下面的代码会将传入的字符串转换为传出的字节切片。希望这是你之后的事情:

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

输出:

  

[[102 111 111] [98 97 114] [98 97 122] [98 97 116]]

Playground