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 <javascript:>> 
> 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 <javascript:>.
> 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