You can convert an interface to string in Go using the fmt.Sprint or fmt.Sprintf function.
Here is a example of converting an interface to string:
var test interface{} = "stringInInterface" example1 := fmt.Sprint(test) example2 := fmt.Sprintf("%v", test) // allows to additionally format the string output
This approach works for any type. It is especially useful when working with JSON. When no struct representation of a JSON document is defined you can use a map[string]interface to decode the JSON data into a Go object. You can then convert the interface{} to String to get the value of a field in the JSON document:
func main() { var jsonObj map[string]interface{} jsonDoc := `{"foo0":"bar0","foo1":{"a":"1"}}` json.Unmarshal([]byte(jsonDoc), &jsonObj) stringFoo0 := fmt.Sprint(jsonObj["foo0"]) fmt.Println(stringFoo0) // you can also access string within the nested object nestedObj, ok := jsonObj["foo1"].(map[string]interface{}) if ok { stringFoo1a := fmt.Sprint(nestedObj[a]) fmt.Println(stringFoo1a) } }
Convert interface to string using type assertion
You can also convert an interface to a string using type assertion. This technique only works if the object referenced by the interface is realy a string:
var test interface{} = "test" t, ok := test.(string) // if ok is false the type of the object reference is no string