Pular para o conteúdo principal

victorstein.dev

Tag: Golang

7/100 Dias de Golang - Prática

# Prática

Vamos praticar os conceitos que aprendemos até agora, com alguns exercícios de LeetCode. As soluções desses problemas não são as ótimas, elas estão aqui mais com o intuito de praticar a sintaxe da linguagem Go e as estruturas.

# 9. Palindrome Number

Dado um número inteiro x, retornar true se x é um palíndromo inteiro. Link para o problema: LeetCode - 9

x := 121

// Converte o número para string
number_as_string := strconv.Itoa(x)

// Pegamos o tamanho da string
length := len(number_as_string)

// Fazemos um for para percorrer a string, mas somente até a metade
for i := 0; i < length/2; i++ {
    // Pegamos o caracter da posição i
    left := number_as_string[i]

    // Pegamos o caracter da posição length - i - 1
    // length - i - 1 é a posição do caracter oposto ao da posição i
    // Exemplo: se i for 0, então length - i - 1 será o último caracter
    // Lembre que o índice começa em 0, então o último caracter é length - 1
    right := number_as_string[length-i-1]

    // Se os caracteres forem diferentes, então não é um palíndromo
    if left != right {
        println("Não é um palíndromo")
    }
}

println("É um palíndromo")

Nesse código, a mensagem “É um palíndromo” sempre será impressa, pois o código não faz nada quando os caracteres são diferentes. No leetcode iremos retornar um valor booleano, ao invés de imprimir uma mensagem. O legal do LeetCode é que mostra o tempo de execução e o uso de memória da sua solução e compara com outras soluções.

Ler Mais

6/100 Dias de Golang - If, For, Switch e GoTo

# If, For, Switch e GoTo

Algumas estruturas são básicas em praticamente todas as linguagens, pois permitem o controle do fluxo de execução do código. No Go, não é diferente: if, for, switch e goto (sim, existe goto) são fundamentais para criar lógica condicional, laços de repetição e até saltos diretos dentro do código.

# If

O if é uma das estruturas fundamentais de controle de fluxo em Go, permitindo que o programa tome decisões com base em condições lógicas. Seu funcionamento é semelhante ao de outras linguagens, mas possui algumas particularidades que fazem parte do estilo idiomático do Go.

Ler Mais

5/100 Dias de Golang - Tipos Compostos - Structs

# Structs

Structs são tipos de dados compostos que permitem agrupar múltiplos campos de diferentes tipos em uma única estrutura. Elas são semelhantes às structs em C e C++, servindo como uma forma de criar objetos. Porém sem ser uma classe! Go não é uma linguagem orientada a objetos, mas podemos simular objetos com structs. Veja como definir uma struct:

type Person struct {
    Name string
    Age  int
}

Aqui temos uma struct chamada Person com dois campos: Name e Age. Para criar uma variável do tipo Person, fazemos da seguinte forma:

Ler Mais

4/100 Dias de Golang - Tipos Compostos - Maps

# Maps

Maps são hash tables. Eles são uma coleção de pares chave-valor. Para quem já programou em Python os maps são muito similares aos dicionários. Como a liguagem é tipada, temos que todas as chaves devem ser do mesmo tipo e todos os valores devem ser do mesmo tipo. Para definirmos um map, onde as chaves são do tipo string e os valores do tipo int, fazemos da seguinte forma:

Ler Mais

3/100 Dias de Golang - Tipos Compostos - Slices

# Slices

Na maior parte das vezes que precisar armazenar valores, você vai utilizar Slices, eles possuem uma grande vantagem em relação aos Arrays, eles são expansíveis. O compilador não considera o tamanho do slice como uma parte do seu tipo. A forma como eles são declarados é muito similar ao array, porém não definimos o tamanho

var x = []int

Da mesma forma que arrays, podemos criar slices bidimensionais

Ler Mais

2/100 Dias de Golang - Tipos Compostos - Arrays

# Tipos Compostos

No capítulo 4 do livro A Linguagem de Programação Go[1] é feito uma analogia muito boa sobre tipos no Golang. Os tipos básico, são como os átomos e os tipos compostos são como as moléculas - uma combinação de vários átomos. Nesse post vamos mergulhar no tipo composto array.

# Arrays

Um array é uma sequência com um tamanho pré definido de um tipo específico. No Go, o tamanho do array faz parte do tipo Devido a essa “limitação” de ter um tamanho pré determinado, sendo assim arrays são pouco usados em Go.

Ler Mais

1/100 Dias de Golang - Tipos Básicos

# Tipos em Golang

Na introdução da documentação do Go, temos a seguinte frase:

Go is a general-purpose language designed with systems programming in mind. It is strongly typed and garbage-collected and has explicit support for concurrent programming. Programs are constructed from packages, whose properties allow efficient management of dependencies.

Quero mostrar aqui o “It is strongly typed”, Go é uma linguagem de programação fortemente tipada, isso se refere-se a um sistema de tipos que impõe regras rigorosas sobre como os dados podem ser usados e manipulados. Linguagens fortemente tipadas exigem que o tipo de dados de uma variável seja explicitamente definido e que as operações entre diferentes tipos de dados sejam cuidadosamente controladas.

Ler Mais