加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

1.golang学习笔记:数组是一种值类型

发布时间:2020-12-16 18:08:48 所属栏目:大数据 来源:网络整理
导读:golang中数组–值类型 区别于C语言, golang中将一个数组看作是一个值类型,这里与C语言作为对比进行解释。 在C语言中,例如定义一个int类型的数组 int array [ 10 ] = { 12 , 23 , 34 , 45 , 56 }; 则array实际上代表的是一个地址,例如在函数的参数传递中

golang中数组–值类型


区别于C语言, golang中将一个数组看作是一个值类型,这里与C语言作为对比进行解释。

在C语言中,例如定义一个int类型的数组

int array[10] = {12,23,34,45,56};

则array实际上代表的是一个地址,例如在函数的参数传递中,实际参数传递一个int数组的数组名, 实际上把该数组的地址传递给了函数。

#include <stdio.h>

void show_array(int *array,int length);

void show_array(int *array,int length)
{
    int i = 0;

    for(i = 0; i < length; i++){
        printf("%d ",array[i])
    }
    printf("n")   
}

int main(int argc,char **argv)
{
    int array[10] = {12,56};
    show_array(array,sizeof(array)/ sizeof(int))
}

实际上show_array函数中接受的只是array数组的地址。而在golang中如果将数组作为参数传递,则会发生拷贝现象。在函数体中无法修改传入的数组的内容,因为函数内操作的只是所传入数组的一个副本。

定义一个int数组:

array := [10]int {1,2,3,4,5}

编写修改数组内容的函数:

func modifyArray(array [10]int)  {
    array[3] = 40
    fmt.Println("In modifyArray() function,array values: ",array)
}

在main()中打印调用modifyArray后的数组的值:

modifyArray(array) fmt.Println("In main() function,array)

调用后的结果如下所示:

In modifyArray() function,array values:  [1 2 3 40 5 0 0 0 0 0]
In main() function,array values:  [1 2 3 4 5 0 0 0 0 0]

主函数中int数组并未被修改,如果想要在函数内部操作外部的数据结构。需要用到数组切片功能。后边会对大家进行讲解。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读