golang-数组做函数参数
如果Go中的数组作为函数的参数,那么实际传递的参数是⼀份数组的拷贝,⽽不是数组的指针。(C/C++区分)⾸先看⼀下C++的代码:
#include<iostream>
#include<map>
using namespace std;
void fun(int a[]){
a[0]=100;
}
int main(){
int a[4]={1,2,3,4};
fun(a);
cout<<a[0];
return0;
}
执⾏结果:a[0]=100
再看⼀下golang的代码:
package main
import"fmt"
func sum(a [4]int){
a[0]=100
}
func main(){
a:=[4]int{1,1,1,1}//数组
sum(a)
fmt.Println(a[0])
}
执⾏结果:a[0]=1
go语⾔中针对这种问题解决⽅法有两种:
⽅法⼀:传递数组的地址操作
go语言能做什么package main
import"fmt"
func sum(a *[4]int){//指针
a[0]=100
}
func main(){
a:=[4]int{1,1,1,1}
sum(&a)//引⽤
fmt.Println(a[0])
}
执⾏结果:a[0]=100
⽅法⼆:使⽤切⽚代替数组(切⽚和数组的区别可参考:)
package main import"fmt"
func sum(a []int){
a[0]=100
}
func main(){
a:=[]int{1,1,1,1}//切⽚sum(a)
fmt.Println(a[0])
}
执⾏结果:a[0]=100
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论