2
respostas

Monitorando tentativas de login em Go

Fiz esse desafio usando a linguagem Go, e aproveitei para testar o meu sistema de Scan proprio que criei para Go, ele pode ser usado em qualquer projeto. O fiz utilizando generics, enquanto o Scan ou Scanf do Go so retorna o numero de items com sucesso e um error e voce nao pode passar uma mensagem nele, o que fiz cobre essas possibilidades para Any types.

O Scan do go e assim:

v, err := fmt.Scan(&attempts)

uma sintaxe bem simples, ele nao e como o do java por exemplo, que retorna direto o valor do input. O que criei tem o intuito de ser mais parecido com o do Java, no caso, e uma mistura entre os dois, tanto Scanner do Java quanto Scan/Scanf do Go, onde voce pode passar uma message, ela pode ou nao ser formatada, e ele ira lhe retornar um input do valor passado e um error.

A sintaxe e esta:

input, err := scan.Any[...]("text")

nos [...] voce passa o tipo que quer retornar e nos (...) o texto/message que quiser imprimir na tela/console. O resultado do desafio foi este:

package main

import (
    "fmt"
    "github.com/rickmvi/go/pkg/scan"
)

const (
    PASSWORD string = "123456"
)

func main() {

    attempts := 3
    for attempts > 0 {
        password, err := scan.Any[string]("Enter your password: ")

        if err != nil {
            panic(err)
        }

        if password == PASSWORD {
            fmt.Println("Correct password!")
            return
        }

        if attempts > 1 {
            fmt.Println("Wrong password!")
            attempts--
            continue
        }

        fmt.Println("Blocked password!")
        attempts--
    }

}

para usar esse scan com type, e so importar o model do meu repositorio no github com:

go get github.com/rickmvi/go@latest 

e importar no projeto o package scan:

import (
    "github.com/rickmvi/go/pkg/scan"
)

Saida no terminal:
Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas

Ola amigo.
Tudo bem.
Vejo que domina bem a linguagem GO e está sempre um passo a frente.
Continue compartilhando seu conhecimento com a gente.
Obrigado.

kkkk, cada dia uma coisa nova para aprender. Estou vendo agora sobre Goroutines.