Postagens

Mostrando postagens com o rótulo Go Básico

Go Básico: Testando Saída do Console (stdout) com os.Pipe

Imagem
Testar a saída do console em programas Go pode ser um desafio, especialmente quando queremos garantir que nossas funções estão imprimindo o resultado correto em nossas aplicações de CLI. Neste artigo, vamos explorar como usar os.Pipe para capturar e verificar a saída do console de maneira eficaz, permitindo a criação de testes unitários robustos para suas funções que escrevem na saída padrão ( os.Stdout ). Para exemplificar, vamos utilizar o seguinte exemplo como demonstração, simulando uma possível aplicação. package main import ( "fmt" ) func printSomething(s string) { fmt.Println(s) } func main() { printSomething("Hello, World!") } Agora vamos supor que queremos testar esta função printSomething e validar se ela realmente está imprimindo o que desejamos de maneira correta. package main import ( "io" "os" "testing" ) func Test_printSomething(t *testing.T) { // Save the original standard output stdOut :=...

Go Básico: Generics

Imagem
A linguagem Go nasceu sem o recurso conhecido como generics , que é uma forma mais "elegante" de criar novos tipos de parâmetros ( exp: um parâmetro de uma função ) que podem ser compostos de outros tipos. Para ilustrar, podemos criar uma função que some a pontuação de todos os jogadores, representada em um mapa com seus nomes e sua pontuação final, que serão inicialmente números inteiros. package main import "fmt" func main() { scores := map[string]int{"User01": 100, "User02": 150, "User03": 50} fmt.Printf("Final score: %d\n", AddScores(scores)) } func AddScores(scores map[string]int) int { var total int for _, score := range scores { total += score } return total } Agora, vamos imaginar que precisamos lidar não apenas com o nosso mapa que representa os pontos em números inteiros, mas também com um novo mapa que representa a pontuação com números decimais. Essa simples alteração faria com que noss...

Go Básico: Manipulação de Arquivos

Imagem
Todo desenvolvedor em algum momento já se deparou com a necessidade de manipular e escrever arquivos, não é mesmo? Em Go, existem algumas maneiras bem simples de resolvermos essa necessidade de forma rápida. Para criar um novo arquivo e escrever algum conteúdo neste novo arquivo, podemos escrever o seguinte código. package main import ( "fmt" "os" ) func main() { //Creating a new file f, err := os.Create("test.txt") if err != nil { panic(err) } defer f.Close() //Writing to the new file. size, err := f.Write([]byte("Hello World!")) if err != nil { panic(err) } fmt.Printf("Size file: %d bytes", size) //If the content of your file is only text, you can opt for this other function. //size, err := f.WriteString("Hello World") } Agora que já criamos e escrevemos em um novo arquivo, podemos realizar a leitura deste arquivo com o seguinte código: package main import ( "fmt" ...