go语言开发基础4 - 之go语言里的标识符、保留关键字、变量与常量
一、go语言里标识符说明
go语言里标识符以字母或下划线开头,大小写敏感,如:
var a = "xxx" // 变量名首字母非大写表示这个变量不可以被导出(这个变量只可以在当前包里被调用)。 var A = "xxx" // 变量名首字母大写表示这个变量可以被导出(其他包里可以引用这个变量)。
var _a = "xxx" // 变量可以以下划线开头,这样的变量名不可以被导出。
_ := "xxx" // _在go语言是特殊标识符,用来忽略结果。
二、go语言里保留的关键字
break:跳出巡检 default: func:定义函数关键字 interface:接口类型 select: case: defer: go:启动一个线程的关键字 map:map类型 struct:结构体 chan:管道 else:流程控制 goto:跳转 package:定义包 switch:循环; const:定义常量 fallthough if:流程控制 range:循环 continue:跳过当前循环,进入下一循环 type:定义类型关键字 for:循环 import:导入包关键字 return:返回值 var: 定义变量关键字
error:错误类型
此外,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
三、常量
说明:
在go语言里面定义常量通过const关键字来定义,常量是只读的不能修改。
const只能定义:布尔型,数字型(int相关类型、浮点类型、complex)和字符串
语法:const identifier [type] = value,其中type可以省略
常量定义:
const test_a int = 123 // 单行常量定义
const ( // 多行常量定义
pi = 3.141592657
str = "hello string"
add = 3+5
)
const ( // 更专业的定义常量
a = iota // a=0
b // b=1
c // c=2
d // d=3
)
// 1.使用_跳过某些值
const (
n1 = iota //0
n2 //1
_ // 下划线表示跳过当前的常量
n4 //3
)
四、变量
Go语言中的每一个变量都有自己的类型,并且变量必须经过声明才能开始使用。
变量声明:
// 1.单个变量声明
var name string // 声明字符串类型的变量
var age int // 声明整数类型的变量
var ret bool // 声明布尔类型的变量
// 2.批量声明变量
var (
a int
b bool
c string
d float32
)
变量默认值:
var (
a int // 默认值为:0
b string //默认值为:""
c bool //默认值为:false
)
变量初始化:
1.单个变量初始化示例: var name string = "追梦人" var age int = 18 2.多个变量初始化示例: var name, age = "追梦人", 18
类型推倒:
有时候我们会将变量的类型省略,这个时候编译器会根据等号右边的值来推导变量的类型完成初始化。
var name = "追梦人" var age = 18
短变量声明:
在函数内部,可以使用更简略的 := 方式声明并初始化变量(注意: :=定义变量的方式只可以在函数里使用,在函数外边使用会报错)。
package main
import (
"fmt"
)
// 定义全局变量m
var m = 100
func main() {
n := 10
m := 200 // 此处声明局部变量m
fmt.Println(m, n)
}
说明:n := 10为var n int \n(换行符) n = 10的缩写,这种简写方法只可以在函数里使用,全局不支持这种写法。
匿名变量:
在使用多重赋值时,如果想要忽略某个值,可以使用匿名变量(anonymous variable)。 匿名变量用一个下划线_表示,例如:
func foo() (int, string) {
return 18, "追梦人"
}
func main() {
x, _ := foo()
_, y := foo()
fmt.Println("x=", x)
fmt.Println("y=", y)
}
匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明。 (在Lua等编程语言里,匿名变量也被叫做哑元变量。)
注意事项:
- 函数外的每个语句都必须以关键字开始(var、const、func等)
- :=不能使用在函数外。
- _多用于占位,表示忽略值。
五、变量作用域
- 全局变量
全局变量是定义在函数外部的变量,它在程序整个运行周期内都有效。 在函数中可以访问到全局变量。
- 局部变量
函数内定义的变量在该函数内可以正常调用,在该函数外无法调用。
如果局部变量和全局变量重名,在函数内优先调用函数内部的变量,在函数外只能调用全局变量。

浙公网安备 33010602011771号