Because AccountService.Create is a method expression you can get to the
interface type by inspecting its first argument. Then you could check
the interface type for all methods and compare the input and output
parameters. This however is brittle and only works if you can guarantee
that there is no other method in the interface with the same parameter
lists.
So i would think using the runtime package is the only and therefor
best option for what you are asking.
Have fun!
On 12.07.19 11:06, Vasiliy Tolstov wrote:
чт, 11 июл. 2019 г. в 00:27, Ian Lance Taylor <i...@golang.org>:
On Wed, Jul 10, 2019 at 1:40 PM Vasiliy Tolstov <v.tols...@selfip.ru> wrote:
Hi! i have interface like
type AccountService interface {
Create(context.Context) error
}
if i need to get string representation of this interface from passed
AccountService.Create how can i do that?
Now i create POC like this:
parts :=
strings.Split(runtime.FuncForPC(reflect.ValueOf(iface).Pointer()).Name(),
".")
return parts[len(parts)-2] + "." + parts[len(parts)-1]
it returns string "AccountService.Create"
Does it possible to get this not using runtime? only via reflect and
may be without strings ?
Can you show us a working example in the Go playground to demonstrated
what you are looking for?
If your interface is named AccountService, I would not expect any
method to be named AccountService.Create. The Create method will be
defined on other types converted to the interface type, not on the
interface type itself. So I'm not sure what you are actually looking
for.
Ian
https://play.golang.org/p/VZhO4KdKk-J
I need to return textual representation of interface name and method name.
--
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/1dbff307-443d-826c-8ecb-339107f7e573%40mb0.org.
For more options, visit https://groups.google.com/d/optout.