将结构放入切片

时间:2018-08-09 15:45:07

标签: 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()
    }

有错误:

  

附加的第一个参数必须是slice;具有* Connection

这部分代码中的错误:

  

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

我是Golang的新手,很难弄清楚我在做什么错。如何重写代码,以使新连接最终添加到切片中?在stackoverflow上找不到答案。希望有人可以帮忙。谢谢。

1 个答案:

答案 0 :(得分:1)

附件应该是这样的

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

append内置函数跟随签名

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

当s是要添加的切片,而vs是要添加到s的元素时,然后de function返回一个新的切片,其中添加了所有元素。