在Golang中使用全局列表变量。收到“使用不带选择器的包裹清单”

时间:2018-12-26 10:49:51

标签: go

我有一个名为Rooms的全局链接列表。它将存储该用户输入的所有房间的名称。在我的函数create中,我试图引用此名为Rooms的列表。我在主要功能中实例化该列表。当我尝试向“房间”列表中添加项目时,出现错误“使用没有选择器的包裹列表”。

我希望能够从我的create函数中将一个字符串添加到名为Rooms的列表中。


package main

import (
    "net"
    "fmt"
    "bufio"
    "os"
    "container/list"
)

var rooms list

func create() string{
    reader := bufio.NewReader(os.Stdin)
    fmt.Print("Name the Chatroom");
    input, _ := reader.ReadString('\n');
    _ = rooms.PushFront(input);
    return "Joined room " + input;
}   

func main() {

    rooms := list.New()
    reader := bufio.NewReader(os.Stdin)
    fmt.Print("Enter a name")
    name, _ := reader.ReadString('\n')

    // connect to this socket
    conn, _ := net.Dial("tcp", "127.0.0.1:8081")
    for { 
        // read in input from stdin
        reader := bufio.NewReader(os.Stdin)
        fmt.Print("Text to send: ")
        text, _ := reader.ReadString('\n')
        // send to socket
        fmt.Fprintf(conn, text + "\n")
        // listen for reply
        message, _ := bufio.NewReader(conn).ReadString('\n')
        fmt.Print("Message from server: "+message)
    }
}  

2 个答案:

答案 0 :(得分:3)

房间的类型应为*list.List,这是来自程序包List的{​​{1}}类型的指针。

list更改为var rooms list

答案 1 :(得分:2)

在这里https://play.golang.org/p/ORa6MI-2Pbn

播放

var rooms list更改为var rooms = list.New()

由于var rooms list错误而出错:list是pkg名称,您应该这样写*list.List