func SliceValue(i any) any { if reflect.TypeOf(i).Kind() == reflect.Slice { sliceVal := reflect.ValueOf(i) if sliceVal.Len() > 0 { return sliceVal.Index(0).Interface() } } return nil } Go reflectパッケージを使って関数名を取得する と組み合わせると、こういうこともできる func FunctionName(i any) string { if reflect.TypeOf(i).Kind() == reflect.Func { return runtime.FuncForPC(reflect.ValueOf(i).Pointer()).Name() } else if reflect.TypeOf(i).Kind() == reflect.Slice { sliceVal := reflect.ValueOf(i) if sliceVal.Len() > 0 { firstElem := sliceVal.Index(0) return runtime.FuncForPC(firstElem.Pointer()).Name() } } return "" }