Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "fmt"
- "errors"
- )
- func main(){
- arrayExample := []interface{}{1, []interface{}{2, 3}, []interface{}{[]interface{}{4}}, []interface{}{5, []interface{}{6}}}
- result, _ := flattenArray(arrayExample)
- fmt.Println("Input array");
- fmt.Println(arrayExample);
- fmt.Println("Result array");
- fmt.Println(result);
- }
- func flattenArray(array []interface{}) (flattened []int , err error){
- currentFlattened := []int{}
- return flattenArrayRecursive(array, currentFlattened)
- }
- func flattenArrayRecursive(array interface{}, currentFlattened []int) (flattened []int , err error){
- switch copy := array.(type) {
- case int :
- currentFlattened = append(currentFlattened, copy)
- case []int :
- currentFlattened = append(currentFlattened, copy...)
- case []interface{}:
- for index := range copy {
- currentFlattened, err = flattenArrayRecursive(copy[index], currentFlattened)
- if err != nil {
- return nil, err
- }
- }
- default:
- return nil, errors.New("Unable to flatten array")
- }
- return currentFlattened, nil
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement