Feb. 6, 2024
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
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
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
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
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
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.