go - 将结构放入 slice 时出现 golang 错误

标签 go

完整代码:

   package main

    import (
        "net"
    )

    var arrayOfConnections []*Connection

    type Connection struct {
        conn net.Conn
        id   int
    }

    func main() {
        serv, _ := net.Listen("tcp", ":8080")
        defer serv.Close()
        connectionHandle(serv)
    }
    func connectionHandle(serv net.Listener) {
        conn, _ := serv.Accept()
        arrayOfConnections = append(&Connection{conn, 1}, 0)
        conn.Write([]byte("one"))
        conn.Close()
    }

有一个错误:

first argument to append must be slice; have *Connection

这部分代码错误:

arrayOfConnections = append(&Connection{conn, 1}, 0)

我是 Golang 的新手,真的很难弄清楚我做错了什么。如何重写代码以使新连接最终附加到 slice ?无法在 stackoverflow 上找到答案。希望有人能帮忙。谢谢。

最佳答案

追加应该是这样的

arrayOfConnections = append(arrayOfConnections, &Connection{conn, 1})

append 内置函数遵循签名

func append(s []T, vs ...T) []T

当s是你要追加的 slice ,vs是你要追加到s的元素,然后de函数返回一个新的 slice ,所有元素都追加。

关于go - 将结构放入 slice 时出现 golang 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51771195/

相关文章:

heroku - 如何在 Heroku 上使用我的 Go 网络应用程序构建实用程序?

go - 如何将 utc 以毫秒为单位聚类到所属的月份

go - 为什么 golang 不能在我的带有范围的 for 循环中正确迭代?

go - 是否可以在 Golang 中使用 CPU 缓存?

映射并发访问

去隐式转换接口(interface)做内存分配?

sql - Go 相当于 GCD 串行调度队列

go - 即时更改序列化的 protobuf 消息?

http - 特定路由上的中间件

go - Golang中如何设置文本输入的初始值?