{"id":590,"date":"2020-08-05T17:16:14","date_gmt":"2020-08-05T15:16:14","guid":{"rendered":"http:\/\/www.valeriofinazzo.it\/wordpress\/?p=590"},"modified":"2020-10-30T17:42:08","modified_gmt":"2020-10-30T16:42:08","slug":"tutorial-go-package-tipi-variabili-e-costanti","status":"publish","type":"post","link":"http:\/\/www.valeriofinazzo.it\/wordpress\/2020\/08\/tutorial-go-package-tipi-variabili-e-costanti\/","title":{"rendered":"TUTORIAL GO &#8211; PACKAGE, TIPI, VARIABILI E COSTANTI"},"content":{"rendered":"\n<p>Messo in piedi l&#8217;IDE incominciamo a vedere come \u00e8 strutturato il sorgente.  Go \u00e8 organizzato in package, quindi il primo comando definito all&#8217;interno del nostro file contiene la definizione del package tramite la direttiva package<\/p>\n\n\n\n<p>Il package principale \u00e8 main ed \u00e8 quello da cui parte la nostra applicazione. Possiamo importare altri package per estendere le funzionalit\u00e0 a nostra disposizione e lo facciamo tramite la direttiva import.  I package hanno la classica struttura ad albero, importante sapere che per invocare le funzioni all&#8217;interno del programma va usato l&#8217;ultimo nodo della definizione del package.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package main\nimport (\n\t\"fmt\"\n\t\"math\/rand\"\n)\nfunc main() {\n\tfmt.Print(rand.Intn(100))\n}<\/code><\/pre>\n\n\n\n<p>Nel codice sopra ho definito il package main, ho fatto l&#8217;import di 2 package di sistema e nella function main ho provveduto a stampare il risultato della chiamata random. Come potete vedere per invocare  la funzione ho utilizzato l&#8217;ultima parte del nome del package rand.<\/p>\n\n\n\n<p>L&#8217;elenco completo dei package di sistema \u00e8 disponibile <a href=\"https:\/\/golang.org\/pkg\/\" target=\"_blank\" rel=\"noreferrer noopener\">qui<\/a>. L&#8217;import multiplo pu\u00f2 essere fatto anche invocando pi\u00f9 volte la direttiva   import per ogni package ma cos\u00ec risulta pi\u00f9 compatto.<\/p>\n\n\n\n<p>A questo punto introduciamo le variabili, esse possono essere definite a livello di package o a livello di funzione, possono essere definite in modo esplicito tramite la chiave var e relativo tipo oppure lasciamo che sia Go a dedurre il tipo.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package main\n\nimport (\n\t\"fmt\"\n\t\"math\/rand\"\n)\n\nvar principale int = 10\nvar i, j, k int = 1, 3, 4\nvar numberFloat float64\n\nfunc main() {\n\tfmt.Println(rand.Intn(100))\n\tsecondaria := true\n\tfmt.Println(principale)\n\tfmt.Println(secondaria)\n\tfmt.Println(i + j + k)\n\tfmt.Println(numberFloat)\n\tnumberFloat = float64(principale)\n\tfmt.Println(numberFloat)\n}\n<\/code><\/pre>\n\n\n\n<p>Nel blocco ho definito una variabile principale a livello di package tramite var e specificando il tipo, mentre ho definito una variabile secondaria a livello di function specificando direttamente il valore e lasciando decidere al compilatore la deduzione del tipo. L&#8217;operatore := pu\u00f2 essere usato solo dentro una function.<\/p>\n\n\n\n<p>Go mira alla stesura di codice compatto e permette la definizione di pi\u00f9 variabili e relativa inizializzazione nello stesso statement.<\/p>\n\n\n\n<p>I tipi semplici previsti da Go sono i sequenti:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>bool\nstring\nint  int8  int16  int32  int64\nuint uint8 uint16 uint32 uint64 uintptr\nbyte \/\/ alias per il tipo uint8\nrune \/\/ alias per il tipo int32\nfloat32 float64\ncomplex64 complex128<\/code><\/pre>\n\n\n\n<p>Quando si definisce una variabile e non si specifica il valore il sistema inizializza con 0 i numeri, false i tipo bool e stringa vuota i tipi string. La conversione tra i tipi non \u00e8 implicita ma deve essere gestita tramite l&#8217;opprtuna funzione.<\/p>\n\n\n\n<p>Tramite l&#8217;operatore const \u00e8 possibile definire delle costanti, se definite con lettera maiuscola saranno visibili al di fuori del package e dovranno presentare un commento a corredo<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Costante - esempio\nconst Costante = 10<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Messo in piedi l&#8217;IDE incominciamo a vedere come \u00e8 strutturato il sorgente. Go \u00e8 organizzato in package, quindi il primo comando definito all&#8217;interno del nostro file contiene la definizione del package tramite la direttiva package Il package principale \u00e8 main ed \u00e8 quello da cui parte la nostra applicazione. Possiamo importare altri package per estendere &hellip; <a href=\"http:\/\/www.valeriofinazzo.it\/wordpress\/2020\/08\/tutorial-go-package-tipi-variabili-e-costanti\/\" class=\"more-link\">Continua la lettura di <span class=\"screen-reader-text\">TUTORIAL GO &#8211; PACKAGE, TIPI, VARIABILI E COSTANTI<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[148],"tags":[105],"_links":{"self":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts\/590"}],"collection":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/comments?post=590"}],"version-history":[{"count":3,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts\/590\/revisions"}],"predecessor-version":[{"id":593,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts\/590\/revisions\/593"}],"wp:attachment":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/media?parent=590"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/categories?post=590"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/tags?post=590"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}