Причина, по которой ваши узлы не добавляются в исходный связанный список ссылок, потому что вы не используете указатель на структуру.Так что даже если функция Increment
в вашем примере кода изменяет значение.Копия структуры изменена, а не фактическая структура.
Вы можете объявить методы с указателями получателей.Это означает, что тип получателя имеет буквальный синтаксис * T для некоторого типа T. (Кроме того, T сам по себе не может быть указателем, например * int.)
Если вы хотите изменить структурный счетчик connectedlistNode напокажите узлы, добавленные в список, вы должны использовать приемник с типом указателя в обоих методах, работающих для изменения связанного списка, следующим образом:
func (l *LinkedList) AddInitialValue(v interface{})
func (l *LinkedList) LogState()
И внутри главной передачи передать адрес связанный список, чтобы использовать этот тип указателяприемники как:
func main() {
list := &LinkedList{}
list.AddInitialValue(9)
fmt.Println("----")
list.LogState() // size: 0
}
Рабочий код Игровая площадка
Примечание: -
Существует две причины для использованияприемник указателя.
- Для изменения значения, на которое указывает его приемник.
- Чтобы избежать копирования значения при каждом вызове метода.Это может быть более эффективным, если получатель имеет большую структуру
Для получения дополнительной информации просмотрите Наборы методов