Principios de Orientação a Objetos em Go

Trabalhando com Estruturas

Assim como C, a linguagem Go trabalha com a definição de estrutura. Observe o código descrito abaixo:

package main
 
import (
	"fmt";
)
 
func main() {
 
	//Trabalhando com Estruturas
 
	//Estrutura do tipo pessoa
	type Pessoa struct {
		//Atributos da Estrutura
		nome string;	
		idade int 
	}
 
	//Declara a estrutura Pessoa
	p := new(Pessoa); //ou var p *Pessoa = new(Pessoa);
	//Informa os atributos
	p.nome = "Igor Takenami";
	p.idade = 29;
	fmt.Printf("\n\n%s voce tem %d anos\n\n",p.nome,p.idade);
 
	//Criando um ponteiro para alterar o valor da estrutura criada anteriormente
	var p2 *Pessoa = p; //A variável p não precisa do "&" pois o conteudo de p já é o endereço de memória
	p2.nome = "Outra Pessoa";	
	//Imprime a mesma estrutura p
	fmt.Printf("%s voce tem %d anos\n\n",p.nome,p.idade);
 
}

Classe

Uma classe em Go define métodos que estão associados a uma estrutura. Uma coisa que percebi foi que o nome dos métodos deve iniciar com letra maiúscula pois desta forma o método funcionará de forma pública podendo ser acessado externamente. Caso utilize o nome do método iniciando em minúsculo somente a própria estrutura poderá enxergar. Observe o código abaixo:

//arquivo: calculadora.go
package calculadora
 
//Definição de estruturas. Como as classes em Java
 
//Define uma estrutura Calc
type Calc struct{
	Val1,Val2 float;//Atributos da estrutura
}
 
/*
Metodos da Estrutura. O "(c *Calc)" define que este método pertende a estrutura e para acessar os outros atributos 
e metdos basta usar a variável "c"
*/
func (c *Calc) Somar() float {
	return c.Val1+c.Val2;
}
 
func (c *Calc) Subtrair() float {
	return c.Val1-c.Val2;
}
 
func (c *Calc) Multiplicar() float {
	return c.Val1*c.Val2;
}
 
func (c *Calc) Dividir() float {
	return c.Val1/c.Val2;
}

Para rodar o código acima utilize

//arquivo: teste_classe.go
package main
 
import (
	"./calculadora"; //Informando o pacote que será utilizado. Este pacote contem a estrutura Calc
	"fmt";
 
)
 
func main() {
 
	//Cria a estrutura
	c := calculadora.Calc{10,5};
	//Ou //c := new(calculadora.Calc);	c.Val1=10; c.Val2=5; //Ou //var c *calculadora.Calc = new(calculadora.Calc);
 
	fmt.Printf("\n\n");
 
	fmt.Printf("Soma: %f\n",c.Somar());
 
	fmt.Printf("\n\n");
 
 
 
}
 
go/oo.txt · Última modificação: 2010/05/13 14:58 (edição externa)
 

Creative Commons License
Esta obra está licenciada sob uma Licença Creative Commons.