golang


Feb. 6, 2024

Database from scratch

Persistence: como não perder dados Indexing: como consultar dados Concurrency: como lidar com multiplos clientes Persistence Indexing Existem dois tipos de queries: Analytical (OLAP): Geralmente envolvem um grande numéro de dados, com agregação, agrupamento, or joins. Transactional (OLTP): consultas que envolvem apenas uma pequena parte dos dados. Transactional (OLTP)

Feb. 3, 2024

Dependency injection system for Go

Parameter Object São objetos com o propósito de carregar para métodos ou funções como as funções New* que criam objetos. type ClientParams struct { fx.In Config ClientConfig HTTPClient *http.Client } func NewClient(p ClientParams) (*Client, error) { return &Client{ url: p.Config.URL, http: p.HTTPClient, // ... }, nil Result Object Similar ao Parameter Object é utilizado para carregar os resultados de uma função ou método, o objeto é definido exclusivamente por uma função ou método

Oct. 15, 2023

IO Pipes

With io.Pipe we have a convenient way to connect a writer to a reader, really similar to how channels work pr, pw := io.Pipe() References justforfunc #19: mastering io.Pipes

Sep. 11, 2023

GO - Strings

Uma string é uma sequencia imutavel de bytes. As strings são convencionalmente interpretadas como sequencias de pontos de código Unicode (runas) codificadas em UTF-8. A função lendevolve o número de bytes não de runas s :+ "hello, world" fmt.Println(len(s)) // 12 fmt.Println(s[0], s[7]) // "104 119" O iésimo byte de uma string não corresponde diretamente ao iésimo caracter, pois a codificação UTF-8 de um ponto de código que não seja ASCII exige mais.

Jul. 15, 2023

Gorrotinas e Canais

go f() // cria uma nova gorrotina que chama f() Canais Os canais sãos os meios de comunicação entre as gorrotinas Cada canal é um comunicador de um tipo particular ch := make(chan int) // ch é do tipo chan int Um canal é uma referência a estrutura criada por make instrução de envio: ch <-x instrução de recpção em uma instrução de atribuição: x = <-ch instrução de recepção com resultado descartado: <-ch Para fechar um canal close(ch)

Apr. 19, 2023

GO - Tipos compostos

Array Um array é uma sequencia de tamanho fixo de zero ou mais elements var q [3]int = [3]int{1,2,3} q := [...]int{1,2,3} // com a reticencia o tamano será determinado pela quantidade de inicializadores O tamanho de um array faz parte do seu tipo q := [3]int{1,2,3} q = [4]int{1,2,3,4} // erro de compilação: não é permitido atribuir [4]int a [3]int Arrays são inflexiveis Fatias (slices) Uma fatia representa um sequencia de tamanho variavel cujo elementos tem o mesmo tipo.