Go学习笔记(六)函数,变量作用域,数组,指
来源:互联网 发布:c语言的冒泡排序算法 编辑:程序博客网 时间:2024/05/21 07:12
函数
最少有个main() 函数,可以返回多个值
- 值传递:默认情况下,Go 语言使用的是值传递,即在调用过程中不会影响到实际参数。
- 引用传递:引用传递是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。
/* 调用 swap() 函数 * &a 指向 a 指针,a 变量的地址 * &b 指向 b 指针,b 变量的地址 */ swap(&a, &b) //ab的值就得到了交换。 func swap(x *int, y *int) { var temp int temp = *x /* 保存 x 地址上的值 */ *x = *y /* 将 y 值赋给 x */ *y = temp /* 将 temp 值赋给 y */}
函数作为值:函数定义后可作为值来使用
import( "fmt" "math" ) func main(){ /* 声明函数变量 */ getSquareRoot := func(x float64) float64{ return math.Sqrt(x) } /* 使用函数 */ fmt.Println(getSquareRoot(9)) } //输出结果 3
闭包:闭包是匿名函数,可在动态编程中使用
方法: 方法就是一个包含了接受者的函数
变量作用域
- 局部变量:在函数体内生命的变量为局部变量,它的作用域只在函数体内。
- 全局变量:在函数体外生命的变量。全局变量可以在整个包甚至外部包(被导出后)使用。
(ps:全局变量和局部变量名称相同时,优先烤炉局部变量)
形式参数:为函数的局部变量来使用
数组
数组的长度是固定的。可以根据声明的数组来设置大小。
- 多维数组 var threedim [5][10][4]int
- 向函数传递数组
void myFunction(param []int) //未设置大小void myFunction(param [10]int) //指定数组大小
指针
变量是一种使用方便的占位符,用于引用计算机内存地址。Go 语言的取地址符是&,放到一个变量前使用就会返回相应变量的内存地址。例:&a
一个指针变量可以指向任何一个值的内存地址它指向那个值的内存地址。
//声明指针
var ip *int /* 指向整型*/
var fp *float32 /* 指向浮点型 */
使用指针
- 定义指针变量
- 为指针变量赋值
- 访问指针变量中指向地址的值
package mainimport "fmt"func main() { var a int= 20 /* 声明实际变量 */ var ip *int /* 声明指针变量 */ ip = &a /* 指针变量的存储地址 */ fmt.Printf("a 变量的地址是: %xn", &a ) /* 指针变量的存储地址 */ fmt.Printf("ip 变量的存储地址: %xn", ip ) /* 使用指针访问值 */ fmt.Printf("*ip 变量的值: %dn", *ip )}/*输出结果a 变量的地址是: 20818a220ip 变量的存储地址: 20818a220*ip 变量的值: 20*/
空表示为:nil 同null一样。 指针声明后未分配到任何变量时为nil。打印出来是0;
更多内容
- Go 指针数组:可以定义一个指针属猪来存储地址
- Go 指向指针的指针:Go 支持指向指针的指针
- Go 像函数传递指针参数:通过引用或地址传参,在函数调用时可以改变其值
0 0
- Go学习笔记(六)函数,变量作用域,数组,指
- C程序设计语言(K&R)学习笔记--3.函数、作用域、内部变量与外部变量
- JavaScript---基本语法学习(二):数组、函数和变量作用域学习
- Go学习笔记六(并发编程)
- Go语言学习笔记(六)接口
- Coffee script 学习笔记I --函数及变量作用域
- Python学习笔记-1(变量、类型、函数、类、作用域)
- Go语言学习(六)函数
- php学习笔记(六)数组及其相关处理函数
- C学习笔记(六)函数、数组与指针
- Go 语言变量作用域
- Go语言变量作用域
- C++学习笔记(六)-- 类和对象 构造函数和析构函数 const成员函数 this指针 对象数组 堆栈管理变量
- Go语言学习笔记(三)-包、变量、函数
- python学习笔记11(函数二): 参数的传递、变量的作用域
- Go 函数 学习笔记
- go学习笔记:1.1变量
- Go语言学习笔记-变量
- mysql UNIX时间戳与日期的相互转换
- OpenDaylight-Boron学习笔记:1 实验环境搭建说明
- Servlet基础总结(2)
- Linux jdk环境变量配置与详解
- Spring+MyBatis+JUnit+Maven创建项目实例
- Go学习笔记(六)函数,变量作用域,数组,指
- Jquery(九)
- Linux挂载操作系统共享出来的目录
- python-13-如何调整字符串中文本的格式?sub函数
- git常用命令|git迁移仓库地址
- 模拟法(poj 1068)Parencodings
- react-native集成超级强大的图表工具native-echarts
- Java面向对象设计模式(七)——装饰模式(Decorator)
- Android深入浅出之Binder机制