code: func (l *List) SetCurrentItem(index int) *List {
  	if index < 0 {
  		index = len(l.items) + index
  	}
  	if index >= len(l.items) {
  		index = len(l.items) - 1
  	}
  	if index < 0 {
  		index = 0
  	}
  	l.currentItem = index
  
  	if index != l.currentItem && l.changed != nil {
  		item := l.items[l.currentItem]
  		l.changed(l.currentItem, item.MainText, item.SecondaryText, item.Shortcut)
  	}
  
  	return l
  }
docs: // SetCurrentItem sets the currently selected item by its index, starting at 0
  // for the first item. If a negative index is provided, items are referred to
  // from the back (-1 = last item, -2 = second-to-last item, and so on). Out of
  // range indices are clamped to the beginning/end.
  //
  // Calling this function triggers a "changed" event if the selection changes.