# XO1106: value with no Go value passed to Go as any

A `use go` binding takes Go's `any` as `go.Any`, an opaque Go value. `go.any(x)` makes one, and the elements of a list literal written for a `List[go.Any]` parameter of a Go binding's function (Go's `...any`, as `fmt.sprintf`'s) convert implicitly as `go.any(x)` would. Only values with a Go form convert: the numbers, Bool, Str (string), Bytes ([]byte), Duration (time.Duration), Time (time.Time), a `use go` handle (its Go value), a go.Any, and a List, Map or Option of those. An enum, a struct, a closure or a capability has no Go value. Pass its fields, or a Str you format, instead. See core 2.10, 4.4 and decision 0412.

## Example

```xo
use go "fmt"

enum Color { Red, Green }

fn show(c: Color) -> Str uses go {
  fmt.sprint([c])
}
```

## Fix

```xo
use go "fmt"

enum Color { Red, Green }

fn show(c: Color) -> Str uses go {
  fmt.sprint(["${c:?}"])
}
```

Run `xo explain XO1106` for this text in a terminal, or see
[section 10.6 of the specification](../../spec/core/#106-diagnostic-codes).

