函数注意事项和细节(1) | 学习笔记

简介: 简介:快速学习函数注意事项和细节(1)

开发者学堂课程【Go 语言核心编程 - 基础语法、数组、切片、Map :函数注意事项和细节(1)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/625/detail/9601


函数注意事项和细节(1)

 

函数使用的注意事项和细节讨论

1) 函数的形参列表可以是多个,返回值列表也可以是多个。 

2) 形参列表和返回值列表的数据类型可以是值类型和引用类型。(可以是整数,字符串,map,数组等)

3) 函数的命名遵循标识符命名规范,首字母不能是数字,首字母大写该函数可以被本包文件和其它包文件使用,类似 pubic ,首字母小写,只能被本包文件使用, 其它包文件不能使用,类似 private。

4)函数中的变量是局部的,函数外不生效【案例说明】

新建文件夹 funcdemo04 新建文件 main.go

代码  

//函数中的变量是局部的,函数外不生效

func test() {

//n1是test函数的局部变量,只能在test函数中使用

Var n1 int = 10

}

func main() {

//这里不能使用n1,因为n1是test函数的局部变量

//fmt.Println(“n1=”,n1)

}

5) 基本数据类型和数组默认都是值传递的(不是引用传递),即进行值拷贝。

在函数内修改,不会影响到原来的值。【案例演示】

代码

func test02(n1 int) {

n1 = n1 +10

fmt. Println("test02() n1= ", n1)

}

func main() {

n1 := 20

test02(n1)

fmt. Println("main() n1= ", n1)

}

运行结果

test02() n1=30

main() n1=20

代码

func test02(n1 int) {

n1 = n1 +10

fmt. Println("test02() n1= ", n1)

}

func main() {

num := 20

test02(num)

fmt. Println("main() num= ", num)

}

运行结果

test02() n1=30

main() num=20

6) 如果希望函数内的变量能修改函数外的变量(指的是默认以值传递的方式的数据类型),可以传入变量的地址&,函数内以指针的方式操作变量。

从效果上看类似引用

【案例演示:】

代码//n1 就是*int 类型

func test03(n1 *int) {

fmt.Printf(“n1的地址=%v\n”,&n1)

*n1 =*n1 +10

fmt. Printin("test03() n1=",*n)//30

}

func main() {

num := 20

fmt.Printf(“num的地址=%v”,&num)

test03(&num)

fmt.Println("main() num= ", num)//30

}

运行结果

num 的地址=0xc042010098

n1 的地址=0xc042004030

test03() n1=30

main() num=30

内存

test03 栈

0xc042004030

n1---->[ 0xc042010098 ]

fm.......

main 栈

0xc042010098

num  [ 30 ]

整个代码执行后(函数调用完毕后),test03 栈消失

终端

test03()n1 = 30

main()num =30

7) Go 函数不支持函数重载。

func test02(n1 int) {

n1 = n1 +10

fmt. Println("test02() n1= ", n1)

}

func test02(n1 int, n2 int) {

}

该代码是错误的,

在 Golang 语言中不支持传统的函数重载,会报函数重复定义

相关文章
|
人工智能 编译器 C语言
如何使用函数及函数的注意事项
目录 什么是函数? 如何调用函数? 函数的先后关系? 函数的变量空间? 什么是函数? 首先我们来说一说函数的作用,就是一块简单的代码接受零个或多个参数,做一件事情,并返回零个或一个值 void sum(int a,int b) { int i; int sum=0; for(i=a:i<=b;i++) { sum+=i; } printf("%d到%d的和是%d\n",a,b,sum); } 现在我们就写出了一个简单的求和函数和数学中的y=f(x)很像 函数名 sum 返回类型 void 参数表 int a,int b 函数体 大括号里的所有东西 函数头 大括号前
|
编译器 Scala 开发者
函数使用注意事项和细节2|学习笔记
快速学习函数使用注意事项和细节2。
|
Scala 开发者
包对象注意事项和细节说明|学习笔记
快速学习包对象注意事项和细节说明。
包对象注意事项和细节说明|学习笔记
|
Go 开发者
切片注意事项和细节(1) | 学习笔记
简介:快速学习切片注意事项和细节(1)
133 0
切片注意事项和细节(1) | 学习笔记
|
存储 程序员 Go
切片注意事项和细节(2) | 学习笔记
简介:快速学习切片注意事项和细节(2)
147 0
切片注意事项和细节(2) | 学习笔记
|
Go vr&ar 开发者
切片注意事项和细节(3) | 学习笔记
简介:快速学习切片注意事项和细节(3)
切片注意事项和细节(3) | 学习笔记
|
网络协议 程序员 测试技术
管道的注意事项和细节(2)|学习笔记
快速学习管道的注意事项和细节(2),使用 select 可以解决从管道取数据的阻塞问题【案例演示】 我们在管道读取数据的时候要 close 管道,如果没有关闭,这个时候他会阻塞,而且会发生死锁,但有些情况如想在不想关闭的情况下也不被阻塞的话,我们就要使用 select
管道的注意事项和细节(2)|学习笔记
|
Java 编译器 Scala
函数使用注意事项和细节3|学习笔记
快速学习函数使用注意事项和细节3。
|
Java 编译器 Scala
函数使用注意事项和细节1|学习笔记
快速学习函数使用注意事项和细节1。
|
Go 开发者
函数注意事项和细节(3) | 学习笔记
简介:快速学习函数注意事项和细节(3)