Apresentação e Pergunta Inicial

39 views
Skip to first unread message

Maxwell Morais

unread,
Jan 13, 2023, 10:11:39 AM1/13/23
to Golang Brasil

Olá, pessoal, boa tarde!

Me chamo Maxwell, sou programador Python desde 2006, e trabalho com ERPNext um ERP open source, desde 2010.

Recentemente, me deparei com a necessidade de aprender Golang, para contruir um novo sistema de gestão, baseado em Pocketbase.

Estou trabalhando para criar uma camada de scripting no Pocketbase, para que possamos ligar ele há um motor de regras de negócios que já utilizamos a bastate tempo aqui na empresa.

A minha duvida é a seguinte:

Eu tenho 69 funções, mais ou menos na seguinte estrutura

type ModelEvent struct { Dao *daos.Dao Model models.Model } func modelEventCallbackConstructor(event string) { return func(cb func(e *core.ModelEvent)){ fmt.Println("Listening in GO for %s", event) unsub := event.On(event, func(e *event.UnknownPayload){ core((*core.ModelEvent)(unsafe.Pointer(e))) }) cleanup(event, unsub); } }

E meu desejo é unificar essas 69 funções em uma unica função, +- assim

func eventCallbackConstructor(event string, *eventType any){ return func(cb func(e *eventType)){ fmt.Println("Listening in GO for %s", event) unsub := event.On(event, func(e *event.UnknownPayload){ core((*eventType)(unsafe.Pointer(e))) }); cleanup(event, unsub); } }

Eu não testei esse código, porém imagino que ele não funcione!

Meu desejo é mover o tipo core.ModelEvent de dentro da função, para um argumento eventType na função construtora, dessa maneira, eu consigo reduzir o código.

Eu não sei se esse tipo de pergunta faz sentido em Golang, porém em Python eu utilizo muito isso, junto com meta-programação, para agregar flexibilidade ao código, sem incremento de complexidade.

Se alguém tiver alguma dica, agredeço imensamente!

Maxwell Morais

unread,
Jan 13, 2023, 10:13:27 AM1/13/23
to Golang Brasil
Como o código aparentemente perdeu a formatação, estou agregando o link para o gist

Reply all
Reply to author
Forward
0 new messages