30 lines
441 B
Go
30 lines
441 B
Go
|
|
package main
|
||
|
|
|
||
|
|
type Stringer interface {
|
||
|
|
String() string
|
||
|
|
}
|
||
|
|
|
||
|
|
func ToString[T Stringer](values ...T) []string {
|
||
|
|
result := make([]string, 0, len(values))
|
||
|
|
for idx := range values {
|
||
|
|
result = append(result, values[idx].String())
|
||
|
|
}
|
||
|
|
|
||
|
|
return result
|
||
|
|
}
|
||
|
|
|
||
|
|
type Data struct{}
|
||
|
|
|
||
|
|
func (d Data) String() string {
|
||
|
|
return "string"
|
||
|
|
}
|
||
|
|
|
||
|
|
func main() {
|
||
|
|
data := Data{}
|
||
|
|
var idata Stringer = data
|
||
|
|
|
||
|
|
_ = ToString(data)
|
||
|
|
_ = ToString(idata)
|
||
|
|
_ = ToString(100)
|
||
|
|
}
|