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

一.标识符与关键字

1.标识符

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

2.关键字

Go语言中有25个关键字:

o语言中有25个关键字:

    break        default      func         interface    select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var

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

    Constants:    true  false  iota  nil

        Types:    int  int8  int16  int32  int64
uint uint8 uint16 uint32 uint64 uintptr
float32 float64 complex128 complex64
bool byte rune string error Functions: make len cap new append copy close delete
complex real imag
panic recover

二.变量

1.变量声明

//单个变量创建
var 变量名 变量类型
//多个变量创建
var (
变量名 变量类型
变量名 变量类型
变量名 变量类型
变量名 变量类型
)

2.变量初始化

var 变量名 类型 = 表达式
//单个变量
var name string = "Q1mi"
var age int = 18
//多个变量
var name, age = "Q1mi", 20

3.短变量声明

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

package main

import (
"fmt"
)
// 全局变量m
var m = 100 func main() {
n := 10
m := 200 // 此处声明局部变量m
fmt.Println(m, n)
}

4.匿名变量

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

func foo() (int, string) {
return 10, "Q1mi"
}
func main() {
x, _ := foo()
_, y := foo()
fmt.Println("x=", x)
fmt.Println("y=", y)
}

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

注意事项:

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

三.常量

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

const pi = 3.1415
const e = 2.7182

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

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

const (
pi = 3.1415
e = 2.7182
)

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

const (
n1 = 100
n2
n3
)

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

四.iota

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

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

举个例子:

const (
n1 = iota //0
n2 //1
n3 //2
n4 //3
)

几个常见的iota示例:

使用_跳过某些值

const (
n1 = iota //0
n2 //1
_
n4 //3
)

iota声明中间插队

const (
n1 = iota //0
n2 = 100 //100
n3 = iota //2
n4 //3
)
const n5 = iota //0

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

const (
_ = iota
KB = 1 << (10 * iota)
MB = 1 << (10 * iota)
GB = 1 << (10 * iota)
TB = 1 << (10 * iota)
PB = 1 << (10 * iota)
)

多个iota定义在一行

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

最新文章

  1. 我要谈对象之——JavaScript面向对象(1)
  2. VS2010+PCL配置
  3. text/html与text/plain有什么区别?
  4. Rac &amp; DG
  5. SQLSERVER一些公用DLL的作用解释
  6. 5.android系统裁剪
  7. ( function(){…} )()
  8. Android - 通过Intent启动Activity
  9. 远程服务调用(RMI)
  10. Dialog样式的Activity
  11. nginx 监控脚本
  12. JS--script标签注意细节
  13. Java——IO类,字符流写数据
  14. SaltStack部署服务及配置管理apache+php-第二篇
  15. 在u-boot中添加命令
  16. [Erlang]Erlang经常使用工具解说
  17. 安装Windows Service总是发生异常!
  18. Unity3D-rigidBody.velocity
  19. xpath选择器简介及如何使用
  20. composer 发布自己的开源软件

热门文章

  1. 用jTessBoxEditorFX训练字库
  2. 本机安装mysql步骤
  3. 使用Git Flow规范!
  4. Kafka Manager几个指标含义
  5. Linux shell 函数应用示例01
  6. Wpf DataGrid动态添加列,行数据(一)
  7. spring boot 程序启动缓慢的问题(二)
  8. 让Discuz! X3.2 SEO标题里的“-”支持空格
  9. python基础语法19 面向对象总结,pickle保存对象注意事项
  10. linux防止恶意采集攻防战