美文网首页
关于Golang的那些事(二) -- 变量与声明

关于Golang的那些事(二) -- 变量与声明

作者: llkevin13579 | 来源:发表于2020-08-28 22:41 被阅读0次

关于变量名:

       和Node.js一样,给变量起名需要保证第一个字符为字母或者下划线,后面可以跟任意数量的字符、数字和下划线,并且大小写敏感,Go也有它自己的关键字,这些关键字不能用作变量名,否则系统无法识别它是变量名还是有特殊的意义的,具体的关键字可以参考官方文档:https://golang.org/ref/spec#Keywords,在风格上,和Node.js推荐的风格一致,都是使用驼峰写法,也就是第一个单词都是小写,后面的单词第一个字母大写,其他字母小写,而不是采取很古老的蛇形写法,蛇形写法一般较多出现在较古老的系统当中。

关于声明

       我们知道每个变量在使用之前,都需要在内存里面开辟一个空间,用于保存数据,这个过程就叫做声明,在Go里面做声明和Node.js不同,每个Go文件都以package声明开头,表明文件属于哪个包,package后面是import声明,然后是包级别的类型、变量、常量、函数的声明,不区分顺序。

       在Go里面,变量的声明有两种,一种是var a = 100, 另外一种是短变量声明a := 100,第一种和Node.js相同,第二种是Go特有的一种方式。对于变量的声明,通用格式是var name type = expression, 类型和表达式可以省略其中一个,不能两个同时省略,另外如果声明的时候没有值,它会自动赋值,对于数字会赋0,对于boolean值会赋false,对于string会赋"", 这样在一定程度上可以避免undefined带来的问题,看来Go的发明者也是经历过很多undefined带来的坑。另外一个比较有意思的是,声明可以是一个变量列表,比如var a, b, c = 1, 2, 3,它相当于var a = 1; var b = 2; var c = 3; 然后我看别人给出的一个交换变量值的例子,Go的这个声明特性一下子就完成来变量值的交换工作:var a = 1; var b = 2; a, b = b, a; 直接a, b = b, a就完成了,我记得当年刚学编程的时候,变量交换是需要借助于第三个临时变量的,现在有了它,方便了许多。

       谈到声明,必然会讲到作用域,变量分为包级别变量和局部变量,包级别变量可以理解为Node.js的全部变量,所以它的生命周期(或者叫作用域)为整个程序的执行时间,而局部变量的概念和Node.js相同,每次执行声明语句的时候在内存被创建,最后被当成垃圾被回收,作用域通常是一个函数的开始到结束。

       有一种Go里面比较独特的变量类型,叫做指针,和C语言当中的指针类型类似,指针是一个变量的地址,一个指针指示值所保存的位置,使用指针可以在无须知道变量名字的情况下,间接读取或更新变量的值,如果一个变量声明为var x int,表达式&x (x的地址)获取一个指向整型变量的指针,它的类型是整型指针*int。如果值叫做p,我们说p指向x,或者p包含x的地址。p指向的变量写成*p,表达式*p获取变量的值,一个整型,因为*p代表一个变量,所以它可以出现在赋值操作符左边,用于更新变量的值。

相关文章

  • 关于Golang的那些事(二) -- 变量与声明

    关于变量名: 和Node.js一样,给变量起名需要保证第一个字符为字母或者下划线,后面可以跟任意数量的字符、...

  • JS函数声明与变量声明那些事

    今天看到了一个面试题,让身为前端的我很是惭愧,也做了一些项目了,但是好多原理上的东西还是模棱两可,趁现在没有那么忙...

  • 关于Golang的那些事(三) -- 基本数据类型

    说完了变量与声明,接下来要讲讲Golang里面的数据类型,Golang里面的数据类型分成基础类型、聚合类型...

  • golang变量、常量声明

    变量命名的规则:1、变量名由字母、数组、下划线(_)组成2、变量不能以数字开头3、变量区分大小写4、变量命名要有意...

  • Ruby程序员的Golang之旅03

    Golang声明变量 VS Ruby声明变量 所有编程语言里面,我敢相信没有一门能比在Ruby里面声明一个变量来的...

  • golang基础之数据类型

    一、概述 在golang中会涉及变量(var声明)、常量(const)、枚举(golang从语法上没有enum的定...

  • golang基础语法学习

    golang的变量声明 基本格式var identifier [type] [= value] 例子 例子2 这个...

  • Golang 关于 nil 的认识

    Golang 关于 nil 的认识 1. 什么是 nil ? 大家都清楚,当你声明了一个变量 但却还并木优赋值时,...

  • golang 指针

    1.Golang提供了指针用于操作数据内存,并通过引用来修改变量。只声明未赋值的变量,golang都会自动为其初始...

  • golang-101-hacks(7)——简短变量声明

    注:本文是对golang-101-hacks中文翻译。在GO语言中简短变量声明是一种非常方便的“声明变量”方式sh...

网友评论

      本文标题:关于Golang的那些事(二) -- 变量与声明

      本文链接:https://www.haomeiwen.com/subject/ikrksktx.html