按值传递函数参数,是拷贝参数的实际值到函数的形式参数的方法调用.在这种情况下,参数在函数内变化对参数不会有影响.
默认情况下,Go编程语言使用调用通过值的方法来传递参数.在一般情况下,这意味着,在函数内码不能改变用来调用所述函数的参数.考虑函数swap()的定义如下.
代码如下:
/* function definition to swap the values */
func swap(int x, int y) int {
var temp int
temp = x /* save the value of x */
x = y /* put y into x */
y = temp /* put temp into y */
return temp;
}
现在,让我们通过使实际值作为在以下示例调用函数swap():
package main
import "fmt"
func main() {
/* local variable definition */
var a int = 100
fmt.Printf("Before swap, value of a : %d\n", a )
fmt.Printf("Before swap, value of b : %d\n", b )
/* calling a function to swap the values */
swap(a, b)
fmt.Printf("After swap, value of a : %d\n", a )
fmt.Printf("After swap, value of b : %d\n", b )
func swap(x, y int) int {
让我们把上面的代码放在一个C文件,编译并执行它,它会产生以下结果:
Before swap, value of a :100
After swap, value of a :100
这表明,参数值没有被改变,虽然它们已经在函数内部改变.
通过传递函数参数,即是拷贝参数的地址到形式参数的参考方法调用.在函数内部,地址是访问调用中使用的实际参数.这意味着,对参数的更改会影响传递的参数.
要通过引用传递的值,参数的指针被传递给函数就像任何其他的值.所以,相应的,需要声明函数的参数为指针类型如下面的函数swap(),它的交换两个整型变量的值指向它的参数.
func swap(x *int, y *int) {
temp = *x /* save the value at address x */
*x = *y /* put y into x */
*y = temp /* put temp into y */
现在,让我们调用函数swap()通过引用作为在下面的示例中传递数值:
/* calling a function to swap the values.
* a indicates pointer to a ie. address of variable a and
* b indicates pointer to b ie. address of variable b.
*/
*x = *y /* put y into x */
After swap, value of b :100
这表明变化的功能以及不同于通过值调用的外部体现的改变不能反映函数之外.
①.,go的变量声明顺序是:"先写变量名,再写类型名",此与C/C++的语法孰优孰劣,可见下文解释:
①.0,go语言只有一个循环结构——for循环.
①.1,go里的自增运算符只有——"后++"
每一个变量(常量、类型或函数)在程序中都有一定的作用范围.称之为作用域.
Go语言在编译时会检查每一个变量是否使用过,未使用过的变量就会编译错误.
根据变量定义位置的不同,可以分为以下三个类型:
在函数体内被声明的变量称之为局部变量,作用在函数体内,函数的参数和返回值变量都属于局部变量.局部变量不会一直存在,在函数被调用时存在,函数调用结束后变量就会被销毁,即生命周期.
例子:其中a、b均为局部变量,只会在main函数内有效
在函数体外被声明的变量称之为全局变量,作用于所有源文件.不包含这个全局变量的源文件需要使用"import"关键字引入全局变量所在的源文件之后才能使用这个全局变量.
全局变量声明必须以 var 关键字开头,如果想要在外部包中使用全局变量的首字母必须大写.
函数名后面的小括号里定义的变量, 用于接受来自调用函数的参数.用于接收调用该函数时传入的参数.
例如:下面的例子中,第十七行a、b为sum函数定义的形参,用于传入main函数中的AF、BF
放在函数外直接使用
var name string = "小明"
或者直接
var name= "小明"
以上就是土嘎嘎小编为大家整理的go语言函数外变量相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!