Skip to content

MariaPinguelli/ProjetoLP_MiniFramework

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ProjetoLP_MiniFramework

Links importantes

Link no moodle: https://moodle.utfpr.edu.br/mod/assign/view.php?id=1295950

Link de instalação do Go: https://go.dev/doc/install

Essa estrutura de arquitetura de projeto é diferente, porque o Go tem sua própria convenção para modularidade de projetos, e não é possível rodar o projeto, sem usar essa convenção :) Link sobre project layout: https://github.com/golang-standards/project-layout/blob/master/README_ptBR.md

Documentação da linguagem

Sobre Go

Go é uma linguagem de programação imperativa (ou seja, os programas são escritos como uma sequência lógica de instruções que são executadas na ordem) que possui algumas características de linguagens funcionais, como a passagem de funções como argumentos e closures ("captura" uma variável definida em um escopo, mesmo que este não esteja mais disponível). Além disso, é uma linguagem com tipagem estática, isto é, os tipos de variáveis são definidos em tempo de execução e não podem ser alterados durante a execução do programa.

TAD e OO em Go

Go não tem classes. Em vez disso, usa a composição de structs e interfaces para a implementação de polimorfismo e encapsulamento. AS structs são usadas para definir tipos de dados com campos que podem ser acessados diretamente; também podem incorporar outros tipos de dados (composição de tipos em vez de herança de classes). Uso de pacotes para a modularidade.
O encapsulamento em Go é dado pela delaração de visibilidade de tipos e variáveis. Variáveis e tipos declarados com letras maiúsculas são públicos e podem ser acessados de qualquer pacote (ou módulo); já em minúsculos são privados e, portanto, só podem ser acessados dentro do pacote no qual foram definidos.

Exemplo de código em Go:

package main

import "fmt"

type Pessoa struct { // Struct
    Nome  string // Atributo público
    idade int // Atributo privado
}

func main() {
    p := Pessoa{"João", 30}
    fmt.Println(p.Nome) // Imprime "João"
    fmt.Println(p.idade) // Erro de compilação: `idade` não é pública
}

O polimorfismo em Go é alcançado por meio de interfaces. Observação: em Go, um tipo é considerado compatível com uma interface se implementar todos os métodos definidos na interface. Exemplo:

type Forma interface {
    area() float64
    perimetro() float64
}

func (r Retangulo) area() float64 {
    return r.largura * r.altura
}

func (r Retangulo) perimetro() float64 {
    return 2*r.largura + 2*r.altura
}

Um tipo é considerado compatível com uma interface se implementar todos os métodos definidos na interface. Temos uma interface Forma e Retangulo implementa todos os métodos de Forma. Logo, é compatível e pode-se atribuir uma variável do tipo 'Retangulo' a uma do tipo 'Formula'.

Documentação do projeto

Para desenvolver um mini-framework web, nos inspiramos no pacote 'html/template', que fornece um mecanismo de templates para gerar código HTML dinamicamente, e no pacote 'database/sql', que fornece uma interface comum para acessar diferentes bancos de dados, sendo ambos da biblioteca padrão.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages