我有一个名为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)
}
}
答案 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