go语言中全局变量和局部变量的区别局部变量
在函数体内声明的变量称之为局部变量,它们的作用域只在函数体内,参数和返回值变量也是局部变量 。
以下实例中 main() 函数使用了局部变量 a, b, c:
package main
import "fmt"
func main() {
/* 声明局部变量 */
var a, b, c int
/* 初始化参数 */
a = 10
b = 20
c = ab
fmt.Printf ("结果: a = %d, b = %d and c = %d\n", a, b, c)
}
以上实例执行输出结果为:
结果: a = 10, b = 20 and c = 30
全局变量
在函数体外声明的变量称之为全局变量,全局变量可以在整个包甚至外部包(被导出后)使用 。
全局变量可以在任何函数中使用 , 以下实例演示了如何使用全局变量:
package main
import "fmt"
/* 声明全局变量 */
var g int
func main() {
/* 声明局部变量 */
var a, b int
/* 初始化参数 */
a = 10
b = 20
g = ab
fmt.Printf("结果: a = %d, b = %d and g = %d\n", a, b, g)
}
以上实例执行输出结果为:
结果: a = 10, b = 20 and g = 30
Go 语言程序中全局变量与局部变量名称可以相同,但是函数内的局部变量会被优先考虑 。实例如下:
package main
import "fmt"
/* 声明全局变量 */
var g int = 20
func main() {
/* 声明局部变量 */
var g int = 10
fmt.Printf ("结果: g = %d\n",g)
}
以上实例执行输出结果为:
结果: g = 10
变量是什么意思?变量来源于数学,是计算机语言中能储存计算结果或能表示值的抽象概念 。
变量可以通过变量名访问 。在指令式语言中,变量通常是可变的;但在纯函数式语言(如Haskell)中,变量可能是不可变的 。
在一些语言中,变量可能被明确为是能表示可变状态、具有存储空间的抽象(如在Java和VisualBasic中);但另外一些语言可能使用其它概念(如C的对象)来指称这种抽象 , 而不严格地定义“变量”的准确外延 。
变量命名规则
变量名必须以字母或下划线"_"开头 。
变量名只能包含字母数字字符以及下划线 。
【Go语言变量是什么意思 go语言变量是什么意思呀】变量名不能包含空格 。如果变量名由多个单词组成,那么应该使用下划线进行分隔(比如$my_string) , 或者以大写字母开头(比如$myString) 。
java语言基础与go语言基础,变量和赋值的区别Go语言里面定义变量有多种方式 。
使用var关键字是Go最基本的定义变量方式 , 与C语言不同的是Go把变量类型放在变量名后面:
//定义一个名称为“variableName” , 类型为"type"的变量
var variableName type
定义多个变量
//定义三个类型都是“type”的变量
var vname1, vname2, vname3 type
定义变量并初始化值
//初始化“variableName”的变量为“value”值,类型是“type”
var variableName type = value
golang变量(二)——map和slice详解衍生类型 , interface{} , map, [] ,struct等
map类似于java的hashmap , python的dict , php的hash array 。
常规的for循环,可以用for k,v :=range m {}. 但在下面清空有一个坑注意:
著名的map[string]*struct 副本问题
结果:
Go 中不存在引用传递,所有的参数传递都是值传递 , 而map是等同于指针类型的,所以在把map变量传递给函数时,函数对map的修改 , 也会实质改变map的值 。
slice类似于其他语言的数组(list,array),slice初始化和map一样 , 这里不在重复
除了Pointer数组外,len表示使用长度,cap是总容量,make([]int, len, cap)可以预申请 比较大的容量,这样可以减少容量拓展的消耗 , 前提是要用到 。
cap是计算切片容量,len是计算变量长度的,两者不一样 。具体例子如下:
结果:
分析:cap是计算当前slice已分配的容量大?。?采用的是预分配的伙伴算法(当容量满时 , 拓展分配一倍的容量) 。
append是slice非常常用的函数,用于添加数据到slice中 , 但如果使用不好,会有下面的问题:
预期是[1 2 3 4 5 6 7 8 9 10],[1 2 3 4 5 6 7 8 9 10 11 12],但实际结果是:
注意slice是值传递 , 修改一下:
输出如下:
== 只能用于判断常规数据类型,无法使用用于slice和map判断,用于判断map和slice可以使用reflect.DeepEqual,这个函数用了递归来判断每层的k,v是否一致 。
当然还有其他方式,比如转换成json , 但小心有一些异常的bug,比如html编码,具体这个json问题,待后面在分析 。
变量是什么意思变量来源于数学 , 是计算机语言中能储存计算结果或能表示值抽象概念 。变量可以通过变量名访问 。在指令式语言中,变量通常是可变的;但在纯函数式语言(如Haskell)中,变量可能是不可变的 。
在某些语言中 , 变量可能被显式定义为一个抽象,具有可以表示可变状态的存储空间(如Java和VisualBasic);但是其他语言可能使用其他概念(例如C的对象)来引用这个抽象 , 而不需要严格定义“变量”的确切外延 。
变量很有用,因为它们允许您为程序中将要使用的每一段数据分配一个简短、容易记住的名称 。
变量可以存储用户输入的数据在程序运行过程中(例如使用InputBox函数来显示一个对话框在屏幕上然后保存用户输入的文本变量),一个特定操作的结果 , 数据显示在表单上 。简而言之,变量是跟踪几乎任何类型信息的简单工具 。
扩展资料:
变量命名规则:
1、变量名必须以字母或下划线开头,中间只能由字母、数字和下划线“_”组成;最后一个字符可以是类型说明符;
2、变量名的长度不超过255个字符;
3、变量名在有效范围内必须是唯一的 。有效的作用域是一个程序(例如,一个过程、一个表单等等)可以识别和使用引用变量的作用域 。后面将讨论引用变量的作用域 。
4、在VB中,变量名不能是保留字(关键字) , 也不能是带有类型说明符的保留字,但它可以嵌入到变量名中 。关键字是VB6语言中属性、事件、方法、过程、函数的内部标识符 。
参考资料来源:百度百科-变量
Go语言变量是什么意思的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于go语言变量是什么意思呀、Go语言变量是什么意思的信息别忘了在本站进行查找喔 。
推荐阅读
- 玩游戏显卡升温消失怎么办,打游戏显卡温度太高
- 电脑音乐怎么导入u盘里,电脑音乐怎么导入u盘里
- 怎么更改美国服务器,美国服务器地址怎么填
- gan网络python代码简单实现,python networkx
- linux下配置命令 linux配置命令都一样吗
- 联想笔记本硬盘怎么换,联想笔记本硬盘怎么换
- 手机u盘存不了为什么,为什么手机u盘内存用不了
- flutter调相机,flutter 自定义相机
- 关于十进制函数python的信息