Задать вопрос
  • Структуры, указатели, массивы?

    В данном случае вам нужно положить в мапу указатели на вашу структуру.
    https://play.golang.org/p/Jn18TTSDh5T
    package main
    
    import "fmt"
    
    type nextWords struct {
    	words []string
    }
    
    func (nw *nextWords) GetFirstItem() string {
    	return nw.words[0]
    }
    
    func main() {
    	var myMap = make(map[string]*nextWords)
    	myMap["hello"] = &nextWords{words: []string{"foo", "bar"}}
    
    	fmt.Println(myMap["hello"].GetFirstItem())
    }


    Второй вариант, объявить метод как вызываемый на значении, а не указателе.

    Ваш метод GetFirstItem объявлен как вызываемый на указателе (nw *nextWords), поэтому его можно вызвать только на элементе, от которого го может получить адрес. Из мапы его не получается взять потому что при взятии мы получаем копию этого элемента, а не сам элемент. Инплейс го не может взять в таком случае указатель на структуру, разве что мы сначала вытащим её из мапы в переменную и вызовем метод на ней (например так)
    Когда мы делаем мапу из указателей, мы получаем из неё копию указателя, а не самой структуры и можем вызвать на этом указателе метод.

    Но учтите, что при отсутствии элемента в мапе ваша программа свалится в панику, поэтому в методе GetFirstItem стоит сделать проверку на nil.
    Ответ написан
    Комментировать
  • Ищется (фреймворк|библиотека) под критерии?

    @D3lphi
    Посмотрите в сторону Vue.js. Современный и очень легковесный фреймворк.
    Ответ написан
    1 комментарий