Hi, You could achieve function / method interception with ebpf and uprobes. You can find a thorough tutorial here: https://sematext.com/blog/ebpf-userland-apps/
El dom., 12 abr. 2020 6:20, Tanmay Das <tanmaymi...@gmail.com> escribió: > Hi, thanks for your reply. I am still in the learning phase and when I > learn the usage of a new tool I try to keep notes of *what's allowed *and > *what's > not allowed* by that tool. That's all :) So at this moment, it's not > possible for me to come up with a concrete production-level use case. But > the behavior I described is very common in dynamic languages. If a field > doesn't exist, create that field at runtime. If a method doesn't exist, > make some decision on-the-fly, maybe call another method. In both cases, > the caller *knows* that they (field and method) don't exist and *expects* that > they will be created/responded accordingly at runtime instead of failing. > In PHP they're known as *Magic Methods. *In JavaScript, they're called > *Proxies.* I know that's too much dynamic behavior to ask from a > statically typed language. But now I know that it's not allowed. > > On Sunday, April 12, 2020 at 9:13:03 AM UTC+6, Kurtis Rader wrote: >> >> On Sat, Apr 11, 2020 at 7:59 PM Tanmay Das <tanma...@gmail.com> wrote: >> >>> Say you have a struct Foo and you access fields and call methods on it >>> as you normally would. But is it possible to execute a hook before or after >>> that field access or method call? A good scenario will be: >>> >>> The user calls non-existent method foo.Bar() or accesses non-existent >>> field foo.Bar. If they don't exist, I want to: >>> a) In case of a method call: forward that call to foo.Baz() >>> b) In case of field access: set the foo.Bar at runtime with some value >>> >> >> No, as far as I know. You're looking for a language like Python, which I >> love, but that isn't the Go model of behavior. This also seems like a >> http://xyproblem.info/ question. What is it you really want to do? Are >> you trying to mock something for a unit test? >> >> -- >> Kurtis Rader >> Caretaker of the exceptional canines Junior and Hank >> > -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/golang-nuts/4417bc0c-d521-4a3b-a8af-78c399238e80%40googlegroups.com > <https://groups.google.com/d/msgid/golang-nuts/4417bc0c-d521-4a3b-a8af-78c399238e80%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/CAJ1r40D96vK9kyPTQh2rn5ipN-XsxScWfVXDqfvfmYdoysPRaw%40mail.gmail.com.