Perché nel metodo Process non vengono restituiti errori? È necessario correggere e inviare il codice completamente funzionante.
Golang
Cos'è un puntatore e quanto pesa?
È possibile utilizzare il contesto per trasmettere dati tra componenti o funzioni?
Cos'è una condizione di race e quali sono i metodi per proteggerla?
Gli aggiornamenti dei documenti arrivano al servizio message Document { string Url = 1; // URL del documento, il suo identificatore univoco uint64 PubDate = 2; // ora di pubblicazione dichiarata del documento uint64 FetchTime = 3; // ora di ricezione di questo aggiornamento del documento, può essere considerato come identificatore di versione. La coppia (Url, FetchTime) è unica. string Text = 4; // testo del documento uint64 FirstFetchTime = 5; // inizialmente assente, deve essere compilato } I documenti possono arrivare in qualsiasi ordine (non nell'ordine in cui sono stati aggiornati), e possono esserci messaggi duplicati. È necessario, in uscita, formare messaggi uguali, ma con campi corretti secondo le seguenti regole (tutto quanto sotto vale per un gruppo di documenti con lo stesso campo Url): Il campo Text e FetchTime devono essere uguali a quelli del documento con il FetchTime più grande ricevuto finora. Il campo PubDate deve essere uguale a quello del messaggio con il FetchTime più piccolo. Il campo FirstFetchTime deve essere uguale al valore minimo di FetchTime. In altre parole, in ogni momento prendiamo PubDate e FirstFetchTime dalla prima versione ricevuta finora (se ordiniamo per FetchTime), e Text dall'ultima. L'interfaccia nel codice può essere implementata così: type Processor interface { Process(doc *Document) (*Document, error) } Questo codice funzionerà in un servizio che legge messaggi da una coda (Kafka o simile), e scrive anche il risultato nella coda. Se Process restituisce Null, nulla viene scritto nella coda.
Come funziona la ricerca binaria in una lista ordinata?
Come usare select per lavorare con più canali contemporaneamente?
Qual è la differenza tra una goroutine e un thread del sistema operativo?
Cos'altro, oltre a un mutex, si può usare per proteggersi dalle condizioni di gara?
Cosa sono le sonde (probes) in Kubernetes, come configurarle e quali sono i tipi?
Cos'è la memoria virtuale (swap), quando è necessaria e quando si dovrebbe disattivarla?
/* Stringa data che contiene i caratteri (){}. È necessario determinare se la stringa di input è bilanciata in termini di parentesi. */ func isBalanced(s string) bool { // TODO: implementare questo return false } fmt.Println(isBalanced("()")) // -> true fmt.Println(isBalanced("({()})")) // -> true fmt.Println(isBalanced("(()")) // -> false fmt.Println(isBalanced("(()))")) // -> false fmt.Println(isBalanced("({})")) // -> false
Come consentono le interfacce in Go di implementare il polimorfismo senza indicare esplicitamente l'eredità?
Parlami più dettagliatamente dei progetti in Go
Come cresce la capacità di uno slice durante l'espansione?
Quali progetti stai gestendo, quali sono i compiti di alto livello che svolgi?
Cos'è un canale in Go e quali sono le sue principali aree di applicazione?
Cosa dovrebbe restituire la funzione isBalanced per una stringa vuota?
Cos'è un fork?
Come funziona il commit a due fasi (2PC)?