|
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); }
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"); }