

Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
ottimo per ripasso generale, contiene concetti importati per l'esame
Tipologia: Schemi e mappe concettuali
1 / 3
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!


Commenti: /* */
os.Args[] → slice si stringhe che returna i valori che inserisci dopo go run es.go es: go run es.go 5 6 → os.args[1] = 5, os.args[2] = 6 e os.args[0] = es.go posso fare os.Args[1:] e prendo tutti gli input
continue: salta l’iterazione (del for in cui è) e va a quella successiva (si riferisce al for) break: esce dallo switch in cui è, quindi se ho 4 case e metto il break al secondo salta gli ultimi 2 (si riferisce allo switch)
Funzioni random:
import “math/rand” import “time”
rand.seed(int64(time.Now().Nanosecond())) → numero casuale ad ogni esecuzione n := rand.Intn(100) → imposto limite
math.floor → media float per difetto math.ceil → media float per eccesso Stringhe:
%: %T → tipo dato %v → formato default %6d → decimale con lunghezza 6 (puoi mettere il numero che vuoi) %.2f → float con 2 numeri dopo la virgola
per leggere stringhe: dichiari uno scanner scanner := bufio.NewScanner(os.Stdin)
scanner.Scan() → restituisce true se la stringa ha qualcosa, se premo solo invio oppure ctrl
scanner.Text() → restituisce la stringa scritta, prima di usarlo fai sempre scanner.Scan()
strings.ToUpper() → s1 = strings.ToUpper(s) converto s in maiuscolo e lo assegno a s
strconv.Atoi → converte una stringa con un numero in quel numero formato int i, t := strconv.Atoi(s) i prende il valore del numero nella string, t è per la gestione dell’errore
strconv.ParseFloat(s string,int dimensione) → stessa cosa in float
per scorrere stringa: s := "Ciao, come è andata?"
for _, c:= range s { fmt.Println(string(c)) // Stampa ogni carattere su una nuova riga }
s[6:10] prende quel range, posso fare anche [:8] e va da 0 a 8 e [5:] che va da 5 alla fine
strings.ContainsRune(s, 'z') → s è una stringa e verifico se è presente il rune ‘z’ , returna true o false
strings.Repeat(s stringa, n int) → ripete n volte la stringa s
Slice ed array:
dichiarazione array var a [5]int
dichiarazione slice: var a []int a = make([]int,n)
append(slice,n,n,n…) → aggiungo elementi in coda alla slice s (ne metto quanti ne voglio)
cap → mi dice quanti elementi può tenere la slice prima che go debba riallocare la memoria
copy(dest,src) → copia gli elementi di src dentro a dest, se dest è più piccolo di src copia i primi n elementi
var a [3][2]int = [3][2]int{{1, 2}, {10, 20}, {100, 200}} → array bidimensionale, la sua lunghezza in questo caso è 3 selezione elemento specifico → a[2][1] (200 in questo caso) tutte gli elementi: doppio for, quello esterno con i < len(a) e quello interno con j < len(a[i]) %v stampa entrambi i valori di una riga; oppure uso due range, il primo r su a ed il secondo s(esempio) su r, perchè r prende prima la prima riga, poi la seconda e poi la terza, quindi uso s per prendere ogni elemento di r
var s [][]int → slice bidimensionale; nil e lo 0 value delle variabili composte, NON per array la dichiaro facendo s = make([][]int, l) e un for i:=0;i