package main
func main() {
Swap(10999, 10888)
}
func Swap(saaa, sbbb int) (int, int) {
return sbbb, saaa
}
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int a = 5, b = 10;
printf("交换前: a = %d, b = %d", a, b);
swap(&a, &b);
printf("交换后: a = %d, b = %d", a, b);
return 0;
}
-编译查看结果
$ gcc cc.c -o cc
$ ./cc
交换前: a = 5, b = 10交换后: a = 10, b = 5
看似实现了一样的功能,但是两者的实现方式是不一样的。
go tool compile -S -N -l main.go
查看编译代码,我们参照代码对比看一下
我们看到,传参和返回值都是通过多个寄存器来实现的,我们看一下c的,代码如下#include <stdio.h>
int sum(int arg1, int arg2) {
return arg1 + arg2;
}
int main() {
sum(11999,11888);
}
通过命令 gcc -S cc.c -o - | more
查看编译代码