Использование переменной глобального списка в Golang.Получение "Использование списка пакетов без селектора" - PullRequest
0 голосов
/ 26 декабря 2018

У меня есть глобальный связанный список с именем комнаты.Он будет хранить имена всех комнат, в которые входит этот пользователь. В моей функции create я пытаюсь ссылаться на этот список именованных комнат.Я создаю список в своей основной функции.При попытке добавить элемент в список «комнаты» я получаю сообщение об ошибке «Использование списка пакетов без селектора».

Я бы хотел добавить в список строку с именем комнаты из функции создания.


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 голосов
/ 26 декабря 2018

Тип для номеров должен быть *list.List, указатель на List тип из пакета list.

Изменить var rooms list на var rooms *list.List

0 голосов
/ 26 декабря 2018

Играть здесь https://play.golang.org/p/ORa6MI-2Pbn

Изменить var rooms list на var rooms = list.New()

Ошибка, поскольку var rooms list неверно: list - это имя pkg, вы должны написать так *list.List

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...