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.

Reply via email to