<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>method | www.valeriofinazzo.it</title>
	<atom:link href="http://www.valeriofinazzo.it/wordpress/tag/method/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.valeriofinazzo.it/wordpress</link>
	<description>Il sito dell&#039;ingegnere Valerio Finazzo</description>
	<lastBuildDate>Fri, 30 Oct 2020 16:41:12 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.0.3</generator>
	<item>
		<title>TUTORIAL GO &#8211; METODI E INTERFACCE</title>
		<link>http://www.valeriofinazzo.it/wordpress/2020/08/tutorial-go-metodi-e-interfacce/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 11 Aug 2020 14:27:41 +0000</pubDate>
				<category><![CDATA[GOLANG]]></category>
		<category><![CDATA[function]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[method]]></category>
		<guid isPermaLink="false">http://www.valeriofinazzo.it/wordpress/?p=613</guid>

					<description><![CDATA[<p>Go non consente di definire le classi ma consente di definire dei metodi disponibili per una struttura. Nel blocco sopra ho definito una struttura Persona che contiene nome e cognome. Per definire un metodo si usa una sintassi simile alla definizione di una funzione. Si usa la parola chiave func, definita dalla struttura cui si &#8230; <a href="http://www.valeriofinazzo.it/wordpress/2020/08/tutorial-go-metodi-e-interfacce/" class="more-link">Continua la lettura di <span class="screen-reader-text">TUTORIAL GO &#8211; METODI E INTERFACCE</span> <span class="meta-nav">&#8594;</span></a></p>
The post <a href="http://www.valeriofinazzo.it/wordpress/2020/08/tutorial-go-metodi-e-interfacce/">TUTORIAL GO – METODI E INTERFACCE</a> first appeared on <a href="http://www.valeriofinazzo.it/wordpress">www.valeriofinazzo.it</a>.]]></description>
										<content:encoded><![CDATA[<p>Go non consente di definire le classi ma consente di definire dei metodi disponibili per una struttura.</p>



<pre class="crayon-plain-tag">package main

import &quot;fmt&quot;

//Persona - commento
type Persona struct {
	nome    string
	cognome string
}

func (p Persona) iniziali() {
	fmt.Println(p.nome[0:1] + p.cognome[0:1])
}

func main() {
	var io = Persona{&quot;Valerio&quot;, &quot;Finazzo&quot;}
	io.iniziali()
}</pre>



<p>Nel blocco sopra ho definito una struttura Persona che contiene nome e cognome.  Per definire un metodo si usa una sintassi simile alla definizione di una funzione. Si usa la parola chiave func, definita dalla struttura cui si applica, il nome del metodo, la lista dei parametri che riceve in ingresso e l&#8217;eventuale output. Nello specifico ho definito un metodo iniziali che stampa le iniziali della persona.</p>



<p>Nell&#8217;esempio di sopra il metodo definito sfrutta il passaggio per valore, ovvero il metodo opera su una copia della struttura persona senza modificare i valori dell&#8217;istanza di partenza. Per ovviare a questo Go mette a disposizione il passaggio per riferimento, che si ottiene specificando il puntatore alla struttura.</p>



<pre class="crayon-plain-tag">func (p *Persona) inverti() {
	var nome, cognome string
	nome = p.nome
	cognome = p.cognome
	p.cognome = nome
	p.nome = cognome
}</pre>



<p>Con questo approccio invocando il metodo iniziali si avrà l&#8217;effetto desiderato. In assenza del puntatore non si avrebbe l&#8217;effetto atteso.</p>



<pre class="crayon-plain-tag">func main() {
	var io = Persona{&quot;Valerio&quot;, &quot;Finazzo&quot;}
	io.iniziali()
	io.inverti()
	io.iniziali()
}</pre>



<p>Go mette a disposizione anche il costrutto interfaccia, ovvero permette di definire una lista di metodi che le strutture devono implementare</p>



<pre class="crayon-plain-tag">//Familiare - commento
type Familiare interface {
	iniziali()
}</pre>



<p>In questo caso ho definito una interfaccia Familiare che prevede il metodo iniziali, pertanto posso invocare il metodo iniziali su una variabile che implementa l&#8217;interfaccia Familiare</p>



<pre class="crayon-plain-tag">var nuovoio Familiare = Persona{&quot;Valerio&quot;, &quot;Finazzo&quot;}
	nuovoio.iniziali()</pre>



<p></p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2020%2F08%2Ftutorial-go-metodi-e-interfacce%2F&amp;linkname=TUTORIAL%20GO%20%E2%80%93%20METODI%20E%20INTERFACCE" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2020%2F08%2Ftutorial-go-metodi-e-interfacce%2F&amp;linkname=TUTORIAL%20GO%20%E2%80%93%20METODI%20E%20INTERFACCE" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2020%2F08%2Ftutorial-go-metodi-e-interfacce%2F&amp;linkname=TUTORIAL%20GO%20%E2%80%93%20METODI%20E%20INTERFACCE" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2020%2F08%2Ftutorial-go-metodi-e-interfacce%2F&amp;linkname=TUTORIAL%20GO%20%E2%80%93%20METODI%20E%20INTERFACCE" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_google_gmail" href="https://www.addtoany.com/add_to/google_gmail?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2020%2F08%2Ftutorial-go-metodi-e-interfacce%2F&amp;linkname=TUTORIAL%20GO%20%E2%80%93%20METODI%20E%20INTERFACCE" title="Gmail" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2020%2F08%2Ftutorial-go-metodi-e-interfacce%2F&#038;title=TUTORIAL%20GO%20%E2%80%93%20METODI%20E%20INTERFACCE" data-a2a-url="http://www.valeriofinazzo.it/wordpress/2020/08/tutorial-go-metodi-e-interfacce/" data-a2a-title="TUTORIAL GO – METODI E INTERFACCE"></a></p>The post <a href="http://www.valeriofinazzo.it/wordpress/2020/08/tutorial-go-metodi-e-interfacce/">TUTORIAL GO – METODI E INTERFACCE</a> first appeared on <a href="http://www.valeriofinazzo.it/wordpress">www.valeriofinazzo.it</a>.]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
