On Mon, Dec 10, 2018 at 1:43 PM Tyler Compton <xavi...@gmail.com> wrote:
>
> If my interpretation of the question is correct, I think it boils down to 
> whether or not it's possible to get the reflect.Type of a type in order to 
> pass it to a function without first creating an instance of that type. I 
> don't think it's possible but I would be interested to hear from someone who 
> knows more.

It depends on what you mean by "creating an instance".  For example,
it suffices to create an instance of a pointer to the type, not an
instance of the type itself.  But, yes, reflect.TypeOf requires a
value of some type.  There is no way to get a reflect.Type without
starting with some value of some type.

Ian


> On Mon, Dec 10, 2018 at 1:28 PM Dan Kortschak <d...@kortschak.io> wrote:
>>
>> No, it is possible, but you need to pass the pointer to the interface.
>> You can then use reflect to interrogate the interface value.
>>
>> The bigger question, and one that would help here would be what is it
>> that you are actually trying to achieve.
>>
>> On Mon, 2018-12-10 at 08:53 -0600, Mark Volkmann wrote:
>> > Yes, this is what I'm trying to do!
>> > Perhaps this is not possible.
>> >
>> > On Sun, Dec 9, 2018 at 10:34 PM Robert Engels <reng...@ix.netcom.com>
>> > wrote:
>> >
>> > >
>> > > I think what the OP wants is:
>> > >
>> > > type A interface{}
>> > > type B interface{}
>> > >
>> > > ...
>> > > PrintInterface(A)
>> > >
>> > > Meaning they want to pass the interface definition to some method.
>> > >
>> > > At least that’s what I am guessing.
>> > >
>> > > On Dec 9, 2018, at 9:22 PM, Space A. <reexist...@gmail.com> wrote:
>> > >
>> > > reflect/* is a bit tricky. Use pointer to get interface itself.
>> > >
>> > > package main
>> > >
>> > > import (
>> > >     "fmt"
>> > >     "reflect"
>> > > )
>> > >
>> > > func main() {
>> > >     test := interface{}("test")
>> > >     printInterfaceValue(test)
>> > > }
>> > >
>> > > func printInterfaceValue(i interface{}) {
>> > >     switch testing := i.(type) {
>> > >     case interface{}:
>> > >         fmt.Println("is interface, with value:", testing)
>> > >     case string:
>> > >         fmt.Println("is not interface")
>> > >     }
>> > >
>> > >     fmt.Println("reflect.Type is", reflect.TypeOf(&i).Elem())
>> > > }
>> > >
>> > > Output:
>> > >
>> > > is interface, with value: test
>> > > reflect.Type is interface {}
>> > >
>> > >
>> > >
>> > >
>> > >
>> > >
>> > > понедельник, 10 декабря 2018 г., 5:05:12 UTC+3 пользователь Robert
>> > > Engels
>> > > написал:
>> > > >
>> > > >
>> > > > I mean reflect.Type not a type that is an interface.
>> > > >
>> > > > On Dec 9, 2018, at 6:53 PM, Space A. <reexi...@gmail.com> wrote:
>> > > >
>> > > > Of course. When you "pass a value whose type implements the
>> > > > interface" as
>> > > > an interface argument to a function, you in fact pass an
>> > > > *interface*.
>> > > >
>> > > >
>> > > > воскресенье, 9 декабря 2018 г., 23:23:41 UTC+3 пользователь Mark
>> > > > Volkmann
>> > > > написал:
>> > > > >
>> > > > >
>> > > > > Is it possible to pass an interface to a function in Go? I
>> > > > > don’t want to
>> > > > > pass a value whose type implements the interface, I want to
>> > > > > pass the
>> > > > > interface.
>> > > > >
>> > > > > --
>> > > > > R. Mark Volkmann
>> > > > > Object Computing, Inc.
>> > > > >
>> > > > --
>> > > > 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...@googlegroups.com.
>> > > > For more options, visit https://groups.google.com/d/optout.
>> > > >
>> > > > --
>> > > 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.
>> > > For more options, visit https://groups.google.com/d/optout.
>> > >
>> > > --
>> > > 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.
>> > > For more options, visit https://groups.google.com/d/optout.
>> > >
>> >
>> > --
>> > R. Mark Volkmann
>> > Object Computing, Inc.
>> >
>>
>> --
>> 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.
>> For more options, visit https://groups.google.com/d/optout.
>
>
>
> --
> Tyler Compton
> Student of Software Engineering
> Arizona State University
>
> --
> 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.
> For more options, visit https://groups.google.com/d/optout.

-- 
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.
For more options, visit https://groups.google.com/d/optout.

Reply via email to