参考:https://www.cnblogs.com/nickchen121/p/11517455.html

一.标识符与关键字

1.标识符

在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变量名、常量名、函数名等等。 Go语言中标识符由字母数字和_(下划线)组成,并且只能以字母和_开头。 举几个例子:abc, _, _123, a123

2.关键字

Go语言中有25个关键字:

  1. o语言中有25个关键字:
  2. break default func interface select
  3. case defer go map struct
  4. chan else goto package switch
  5. const fallthrough if range type
  6. continue for import return var

此外,Go语言中还有37个保留字。

  1. Constants: true false iota nil
  2. Types: int int8 int16 int32 int64
  3. uint uint8 uint16 uint32 uint64 uintptr
  4. float32 float64 complex128 complex64
  5. bool byte rune string error
  6. Functions: make len cap new append copy close delete
  7. complex real imag
  8. panic recover

二.变量

1.变量声明

  1. //单个变量创建
  2. var 变量名 变量类型
  3. //多个变量创建
  4. var (
  5. 变量名 变量类型
  6. 变量名 变量类型
  7. 变量名 变量类型
  8. 变量名 变量类型
  9. )

2.变量初始化

  1. var 变量名 类型 = 表达式
  2. //单个变量
  3. var name string = "Q1mi"
  4. var age int = 18
  5. //多个变量
  6. var name, age = "Q1mi", 20

3.短变量声明

在函数内部,可以使用更简略的 := 方式声明并初始化变量。

  1. package main
  2. import (
  3. "fmt"
  4. )
  5. // 全局变量m
  6. var m = 100
  7. func main() {
  8. n := 10
  9. m := 200 // 此处声明局部变量m
  10. fmt.Println(m, n)
  11. }

4.匿名变量

在使用多重赋值时,如果想要忽略某个值,可以使用匿名变量(anonymous variable)。 匿名变量用一个下划线_表示,例如:

  1. func foo() (int, string) {
  2. return 10, "Q1mi"
  3. }
  4. func main() {
  5. x, _ := foo()
  6. _, y := foo()
  7. fmt.Println("x=", x)
  8. fmt.Println("y=", y)
  9. }

匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明。 (在Lua等编程语言里,匿名变量也被叫做哑元变量。)

注意事项:

  1. 函数外的每个语句都必须以关键字开始(var、const、func等)
  2. :=不能使用在函数外。
  3. _多用于占位,表示忽略值。

三.常量

和变量声明非常类似,只是把var换成了const,常量在定义的时候必须赋值。

  1. const pi = 3.1415
  2. const e = 2.7182

声明了pie这两个常量之后,在整个程序运行期间它们的值都不能再发生变化了。

多个常量也可以一起声明:

  1. const (
  2. pi = 3.1415
  3. e = 2.7182
  4. )

const同时声明多个常量时,如果省略了值则表示和上面一行的值相同。 例如:

  1. const (
  2. n1 = 100
  3. n2
  4. n3
  5. )

上面示例中,常量n1n2n3的值都是100。

四.iota

iota是go语言的常量计数器,只能在常量的表达式中使用。

iota在const关键字出现时将被重置为0。const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)。 使用iota能简化定义,在定义枚举时很有用。

举个例子:

  1. const (
  2. n1 = iota //0
  3. n2 //1
  4. n3 //2
  5. n4 //3
  6. )

几个常见的iota示例:

使用_跳过某些值

  1. const (
  2. n1 = iota //0
  3. n2 //1
  4. _
  5. n4 //3
  6. )

iota声明中间插队

  1. const (
  2. n1 = iota //0
  3. n2 = 100 //100
  4. n3 = iota //2
  5. n4 //3
  6. )
  7. const n5 = iota //0

定义数量级 (这里的<<表示左移操作,1<<10表示将1的二进制表示向左移10位,也就是由1变成了10000000000,也就是十进制的1024。同理2<<2表示将2的二进制表示向左移2位,也就是由10变成了1000,也就是十进制的8。)

  1. const (
  2. _ = iota
  3. KB = 1 << (10 * iota)
  4. MB = 1 << (10 * iota)
  5. GB = 1 << (10 * iota)
  6. TB = 1 << (10 * iota)
  7. PB = 1 << (10 * iota)
  8. )

多个iota定义在一行

  1. const (
  2. a, b = iota + 1, iota + 2 //1,2
  3. c, d //2,3
  4. e, f //3,4
  5. )

GO中标识符,标识符,变量,常量,iota的更多相关文章

  1. JAVA之旅(一)——基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算

    JAVA之旅(一)--基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算 Android老鸟重新学一遍JAVA是什么感觉?枯燥啊,乏味啊,而且归纳写博客,都 ...

  2. PL/sql中如何声明变量,常量,控制语句及for,loop,while和顺序控制的使用

    pl/sql 什么是PL/SQL PL/SQL是结合oracle过程语言和机构化查询运行(SQL) 的一种扩展语言.使用PL/SQL可以编写具有很多高级功能的程序,有以下优点 PL/SOL可以采用过程 ...

  3. iOS开发Swift篇(01) 变量&常量&元组

    iOS开发Swift篇(01) 变量&常量&元组 说明: 1)终于要写一写swift了.其实早在14年就已经写了swift的部分博客,无奈时过境迁,此时早已不同往昔了.另外,对于14年 ...

  4. 李洪强iOS开发Swift篇---11_变量&常量&元组

    李洪强iOS开发Swift篇---11_变量&常量&元组 说明: 1)终于要写一写swift了.其实早在14年就已经写了swift的部分博客,无奈时过境迁,此时早已不同往昔了.另外,对 ...

  5. Swift-基础语法之变量&常量&元组

    使用 let来声明一个常量,用 var来声明一个变量.常量的值在编译时并不要求已知,但是你必须为其赋值一次.这意味着你可以使用常量来给一个值命名,然后一次定义多次使用 myVariable = let ...

  6. go标识符、变量、常量

    标识符 标识符是用来表示Go中的变量名或者函数名,以字母或_开头.后可跟着字母.数字. _ 关键字 关键字是Go语言预先定义好的,有特殊含义的标识符. 变量 1. 语法:var identifier ...

  7. Java中标识符和变量的区别

    1.标识符 在JAVA的组成部分中包括了对包.类.方法.变量等的起名,这些名字是要有一定的规则的: 标识符可以包含数字.字母.$._,但是不能以数字开头: 关键字不能用作标识符: 标识符是大小写敏感的 ...

  8. c中的数据类型、常量、变量

    一. 数据 1. 什么是数据 生活中时时刻刻都在跟数据打交道,比如体重数据.血压数据.股价数据等.在我们使用计算机的过程中,会接触到各种各样的数据,有文档数据.图片数据.视频数据,还有聊QQ时产生的文 ...

  9. Java基础之关键字,标识符,变量

    Java基础 首先,来看一下Java基础知识图解,以下便是在java学习中我们需要学习设计到的一些知识(当然不是很完全). 这些都是接下来在以后的学习中我们会学到的一些知识. 1 关键字 首次先来学习 ...

随机推荐

  1. 关于Git的用法

    关于Git Git 是一个分布式版本控制软件,与CVS.Subversion一类的集中式版本控制工具不同,它采用了分布式版本库的作法,不需要服务器端软件,就可以运作版本控制,使得源代码的发布和交流极其 ...

  2. js对象常用属性和方法:复制一个对象,获取一个对象的所有key和所有value的方法

    记录对象的一些实用使用方法及属性 // Object.assign() 多个对象合并 key相同则后面的覆盖前面的 const target = { a: 1, b: 2 }; const sourc ...

  3. Windows 系统常用命令

    /** 环境变量配置 * sysdm.cpl */ /** 系统服务管理 * sservices.msc */ /** 远程服务器连接 * mstsc */ /** doc命令窗口 * doc */

  4. ETL DAG调度策略

    1.目前etl的fetch task策略是基于任务子孙任务数和任务优先级获得task list 2.然后遍历task list 查看任务是否具备执行条件 集群资源校验(yarn/hdfs)<如果 ...

  5. linux的性能调优

    单机调优: 分析性能瓶颈的原因,解决它.   cpu子系统 内存子系统 IO子系统 网络系统       @cpu子系统调优 cpu技术指标 xeon E5520 2.27GHz 8192kb # c ...

  6. 第12节-BLE协议HCI层的数据格式

    学习资料: 1. 蓝牙协议core_v5.0.pdf <Vol 2: Core System Package [BR/EDR Controller volume]>的“Part E: Ho ...

  7. flask实战-个人博客-数据库-生成虚拟数据 --

    3.生成虚拟数据 为了方便编写程序前台和后台功能,我们在创建数据库模型后就编写生成虚拟数据的函数. 1)管理员 用于生成虚拟管理员信息的fake_admin()函数如下所示: personalBlog ...

  8. centos7运维记录文档

    问题一:故障记录时间2019年4月4日,查看系统日志报错如下: tail -f /var/log/messages Apr 4 16:29:16 localhost kernel: tracker-e ...

  9. acwing 算法面试、笔试题公开课整理记录

    week1 Google KickStart 2019 A轮 讲解视频地址AcWing 549. 训练   tag: 排序 遍历 在线练习地址AcWing 550. 包裹       在线练习地址Ac ...

  10. HDU6223 && 2017沈阳ICPC: G. Infinite Fraction Path——特殊图&&暴力

    题意 给定一个数字串,每个位子都能向(i*i+1)%n的位子转移,输出在路径上.字典序最大的.长度为n的串($n \leq 150000$). 分析 先考虑一个暴力的方法,考虑暴力每个x,然后O(n) ...