MST
星途 面试题库

面试题:Go语言多维数组在函数间传递及内存优化

假设有一个三维数组`[5][4][3]int`,编写一个函数,该函数接收这个三维数组作为参数,并对数组中的所有元素进行求和操作。同时,考虑在传递数组时如何优化内存使用,阐述你的思路并写出代码实现。
34.2万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试

思路

在Go语言中,传递数组时,为了优化内存使用,可以传递数组的指针而不是整个数组。这样在函数调用时不会复制整个数组,从而减少内存开销。对于三维数组[5][4][3]int,我们可以定义一个接收数组指针的函数,然后通过三重循环遍历数组的每一个元素并进行求和。

代码实现

package main

import "fmt"

func sumArray(arr *[5][4][3]int) int {
    sum := 0
    for i := 0; i < 5; i++ {
        for j := 0; j < 4; j++ {
            for k := 0; k < 3; k++ {
                sum += (*arr)[i][j][k]
            }
        }
    }
    return sum
}

你可以使用以下方式调用这个函数:

func main() {
    var myArray [5][4][3]int
    // 假设数组已经被初始化
    result := sumArray(&myArray)
    fmt.Println("Sum of array elements:", result)
}