管道里可以传入结构体吗?

//: <> (这里是注释,不会被渲染。可随意删除,以预览显示的内容为准。)

1. 运行环境

2. 问题描述?

3. 您期望得到的结果?

4. 您实际得到的结果?

讨论数量: 3
package main

import "fmt"

type Dog struct {
    Nmae string
}

func main() {
    ch := make(chan Dog, 1)

    var d Dog
    d.Nmae = "大黄"

    ch <- d
    close(ch)

    result := <- ch
    fmt.Println(result)
}

输出

{大黄}

结果:可以

1年前 评论
  • 可以 在通道中发送和接收结构体类型的值 ,需要确保 结构体类型的值是可序列化
package main

import (
    "fmt"
)

// 字段确保可导出
type Dog struct {
    Name string
    Age  int
}

func main() {
    // 可以在通道中发送和接收结构体类型的值
    // 定义一个缓冲区的 channel
    dogCh := make(chan Dog, 1)
    // 结束 main 之前 关闭
    defer close(dogCh)

    // dog 在 chan 中传输,需要确保结构体类型的值是可序列化
    var dog Dog
    dog.Name = "xiaohei"
    dog.Age = 1

    // 发送
    dogCh <- dog
    // 读取
    result := <-dogCh
    fmt.Println(result)
}
1年前 评论

发送的数据类型,要和创建channel时声明的类型一致~

dogCh := make(chan Dog, 1)
dogCh <- dog

structCh := make(chan struct{}, 1)
structCH <- struct{}{}
1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!