In Python, le liste offrono un metodo append()
che può essere chiamato usando la sintassi del metodo standard di Python; ad esempio:
>>> my_list = []
>>> my_list.append('a', 'b', 'c')
>>> my_list
['a', 'b', 'c']
Questa sintassi è intuitiva per me e questo modello è comune nelle implementazioni di elenchi in molte lingue OO.
Ultimamente, ho lavorato più a stretto contatto con Go, e sto cercando di capire meglio alcune delle scelte progettuali fatte nella lingua. In particolare, perché append()
è definito come una funzione regolare (prendendo la slice da aggiungere al primo argomento e restituendo la slice appena costruita), piuttosto che un metodo sul tipo slice?
Sono consapevole che Go non ha un costrutto self
/ this
, ma la libreria standard prende alcune libertà con il modo in cui le sue funzioni sono definite rispetto al resto della lingua; ad esempio, make()
prende un tipo come primo argomento e, per quanto ne so, non è possibile quando si definisce una nuova funzione.
È solo un cenno al modello di C di passare riferimenti a variabili, piuttosto che restituire nuove variabili?