Use generics for Add and Delete Methods

This commit is contained in:
2024-10-20 12:03:26 +02:00
parent e0384904b4
commit a49e853efb
6 changed files with 78 additions and 198 deletions

View File

@@ -23,22 +23,14 @@ func NewPerson(name string) *Person {
// AddExtension adds the Extension to the Person.
func (p *Person) AddExtension(e *ExtensionElement) {
if p.Extensions == nil {
p.Extensions = make([]*ExtensionElement, 1)
p.Extensions[0] = e
} else {
p.Extensions = append(p.Extensions, e)
}
addToSlice(p.Extensions, e)
}
// DeleteExtension deletes the Extension from the Person. It return an error.
func (p *Person) DeleteExtension(id int) error {
length := len(p.Extensions)
if id > length {
return fmt.Errorf("error deleting extension from person %v: id %v out of range %v", p, id, length)
if err := deleteFromSlice(p.Extensions, id); err != nil {
return fmt.Errorf("error deleting extension %v from person %v: %v", id, p, err)
}
p.Extensions = append(p.Extensions[:id], p.Extensions[id+1:]...)
return nil
}