extract value from interface in golang
// extracts interface value to known string type.
func extractValueFromInterface(value interface{}) {
str, ok := value.(string)
if ok {
fmt.Printf("string value is: %q\n", str)
} else {
fmt.Printf("value is not a string: %v\n", value)
}
}
func main() {
extractValueFromInterface("this is a test") //output: string value is: "this is a test"
extractValueFromInterface(12) //output: value is not a string: 12
}
## Extract value from interfaces{}
- If we know the value holds a string and we just want to extract it?
- A one-case type switch would do, but so would a type assertion.
- A type assertion takes an interface value and extracts from it
a value of the specified explicit type.
- From the above example, if it turns out that the value does not
contain a string, the program will crash with a run-time error.
To guard against that, use the "comma, ok" idiom to test, safely,
whether the value is a string.