Aula 19 – Tutorial Golang – Structs

Aula 19 – Tutorial Golang – Structs

Tutorial Golang - Structs

Tutorial Golang – Structs

Página principal do blog

Todas as aulas desse curso

Aula 18                        Aula 20

Se gostarem do conteúdo dêem um joinha 👍 na página do Código Fluente no
Facebook

Esse é o link do código fluente no Pinterest

Meus links de afiliados:

Hostinger

Digital Ocean

One.com

Melhore seu NETWORKING

https://digitalinnovation.one/

Participe de comunidades de desenvolvedores:

Fiquem a vontade para me adicionar ao linkedin.

E também para me seguir no https://github.com/toticavalcanti.

Código final da aula:

https://github.com/toticavalcanti

Toti:

https://www.youtube.com/channel/UCUEtjLuDpcOvR3mIUr-viOA

Backing track / Play-along:

https://www.youtube.com/channel/UCT3TryVMqTqYBjf5g5WAHfA

Código Fluente

https://www.youtube.com/channel/UCgn-O-88XBAwdG9gUWkkb0w

Putz!

https://www.youtube.com/channel/UCZXop2-CECwyFYmHbhnAkAw

PIX para doações

PIX Nubank

PIX Nubank

Se quiser copiar o código do PIX:

00020126580014BR.GOV.BCB.PIX013643c5f950-535b-4658-b91f-1f1d135fe4105204000053039865802BR5925Antonio Cavalcante de Pau6009SAO PAULO61080540900062070503***6304946B

Aula 19 – Tutorial Golang – Structs

Structs

As estruturas em Go, são coleções tipadas de campos.

Elas são úteis para agrupar dados e formar registros.

A estrutura pessoa, nesse exemplo, possui os campos nome e idade.


type person struct {
    name string
    age  int
}

A função newPerson() mostrada abaixo, constrói uma nova estrutura pessoa com os dados.


func newPerson(name string) *person {
    p := person{name: "Toti"}
    p.age = 52
    return &p
}

Você pode retornar com segurança um ponteiro para a variável local, pois uma variável local sobreviverá ao escopo da função.

Você pode nomear os campos ao inicializar uma estrutura.


fmt.Println(person{"Ana", 20})
fmt.Println(person{name: "Alice", age: 30})

Os campos omitidos terão valor zero.


fmt.Println(person{name: "Fred"})

O prefixo & produz um ponteiro para a estrutura.


fmt.Println(&person{name: "Carlos", age: 40})

É idiomático encapsular a criação de uma nova estrutura em funções construtoras.

Então, vamos usar a função que criamos lá em cima, a newPerson().


fmt.Println(newPerson("Paulo"))

Acesse os campos de estrutura com um ponto.


s := person{name: "Nina", age: 50}
fmt.Println(s.name)

Você também pode usar pontos com ponteiros para a estrutura.

Os ponteiros são automaticamente desreferenciados.


sp := &s
fmt.Println(sp.age)

Estruturas são mutáveis.


sp.age = 51
fmt.Println(sp.age)

Código completo


package main

import "fmt"

type person struct {
    name string
    age  int
}

func newPerson(name string) *person {

    p := person{name: "Toti"}
    p.age = 53
    return &p
}

func main() {

    fmt.Println(person{"Ana", 20})

    fmt.Println(person{name: "Alice", age: 30})

    fmt.Println(person{name: "Fred"})

    fmt.Println(&person{name: "Carlos", age: 40})

    fmt.Println(newPerson("Paulo"))

    s := person{name: "Nina", age: 50}
    fmt.Println(s.name)

    sp := &s
    fmt.Println(sp.age)

    sp.age = 51
    fmt.Println(sp.age)
}

E pra executar é só entrar na pasta onde tá o arquivo structs.go

go run structs.go

Saída:

Saída:

{Ana 20}
{Alice 30}
{Fred 0}
&{Carlos 40}
&{Toti 53}
Nina
50
51 

É isso pessoal, fico por aqui.

Nos vemos na próxima aula, até mais. 🙂

Página principal do blog

Todas as aulas desse curso

Aula 18                        Aula 20

página do Código Fluente no
Facebook

Esse é o link do código fluente no Pinterest

Meus links de afiliados:

Hostinger

Digital Ocean

One.com

Obrigado e bons estudos. 😉

About The Author
-

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>