Como Definir Estruturas (Struct) na Linguagem Golang

in #golang5 years ago

Às vezes temos dados que são relacionados e que seria melhor encapsula-los em uma só entidade.

Em um jogo de duas dimensões, por exemplo, precisamos de duas variáveis para manter a posição do jogador. No plano cartesiano, definimos o ponto com os valores (x, y).

var x int = 48
var y int = 63

No código acima, declaramos duas variáveis de tipo inteiro, x e y, com valores 48 e 63, respectivamente.

Na linguagem Golang, podemos encapsular vários tipos de dados em uma só entidade chamada de struct (estrutura).

Podemos criar uma estrutura da seguinte maneira:

type Posicao struct {
  X int
  Y int
}

A estrutura acima contém dois campos: X e Y. Ambos são do tipo inteiro. Podemos criar estruturas literais assim:

Posicao{48, 63}

O código acima cria uma struct literal usando 48 para o valor de X e 63 para o valor Y. Note que nesse exemplo a ordem é importante.

Podemos acessar os campos de uma estrutura usando o ponto (.) depois do nome da variável que mantém a estrutura:

var pos Posicao = Posicao{48, 63}

fmt.Println(pos.X)
fmt.Println(pos.Y)

A saída do programa acima é:

48
63

Para modificar os valores de uma estrutura, basta usar a operação de atribuição assim:

pos.X = 87

O valor de X na estrutura será substituído por 87.

Para aprender mais sobre struct em Golang, assista às aulas do NBK Mundo Tech:

Nos vemos lá!

Sort:  

Obrigado por postar! Esse comentário é o novo bot que dará upvote 5% para todos os posts que usam a tag #pt. Ainda não votou em mim como witness? Clique aqui e dê o seu voto! É rápido!

Congratulations @nbkmundotech! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You published more than 40 posts. Your next target is to reach 50 posts.

You can view your badges on your Steem Board and compare to others on the Steem Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

To support your work, I also upvoted your post!

Vote for @Steemitboard as a witness to get one more award and increased upvotes!