Go文件基本结构
package main
import "fmt" //导入语句
//函数外只能放标识符(变量/常量/函数/类型)的声明
// fmt.println("wuhu") 非法
func main() {
fmt.print(VAR) //输出想要打印的内容
fmt.println("wuhu") //打印指定内容后会在后面加换行符
fmt.printf("name:%s",name) //%s,占位符使用name变量的值替换占位符
}
标识符
在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变量名、常量名、函数名等等。 Go语言中标识符由字母数字和_
(下划线)组成,并且只能以字母和_
开头。 举几个例子:abc
, _
, _123
, a123
。
关键字
- 关键字是指编程语言中预先定义好的具有特殊含义的标识符。 关键字和保留字都不建议用作变量名。
Go语言中有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
变量
变量(variable),功能是存储数据。不同的变量保存的数据类型可能会不同。
- 常见的数据类型:整数型,浮点型,布尔型等。
- Go中每一个变量都有数据类型,使用前必须经过声明。
变量的声明标准
同一作用域内不支持重复声明,且变量声明后必须使用,推荐使用驼峰命名发
格式
var (变量名) (变量数据类型)
栗子
//变量声明
var name string //字符串
var age int //整型
var isOK bool //布尔类型
//批量
var {
name string
age int
isOK bool
}
声明变量,指定初始值
var name1 string = "芜湖"
var age1 int =45
var name2,age = "芜湖",26
//类型推导,省略变量类型 这个时候编译器会根据等号右边的值来推导变量的类型完成初始化。
var name3 = "芜湖"
var gae3 = 35
- 短变量声明
只可用于函数内部.可以用:=
m := 10
- 匿名变量
- 在使用多重赋值时,如果想要忽略某个值,可以使用匿名变量(anonymous variable)。 匿名变量用一个下划线_表示
func foo() (int, string) {
return 10, "Q1mi"
}
func main() {
x, _ := foo()
_, y := foo()
fmt.Println("x=", x)
fmt.Println("y=", y)
}
注意事项:
- 函数外的每个语句都必须以关键字开始(var、const、func等)
:=
不能使用在函数外。_
多用于占位,表示忽略值。
常量
相对于变量,常量是恒定不变的值,多用于定义程序运行期间不会改变的那些值。 常量的声明和变量声明非常类似,只是把var
换成了const
,常量在定义的时候必须赋值。
const pi =3.14159
const e =2.7
- 常量批量声明
const (
n1 = 100
n2 //常量名称后没有跟值简写同第一个变量值
n3
)
iota
iota
是go语言的常量计数器,只能在常量的表达式中使用。- iota在const关键字出现时将被重置为0。const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)。 使用iota能简化定义,在定义枚举时很有用。
const (
n1 = iota //0
n2 //1
_ //跳过一个值
n4 //3
n5 = 100 //100 插队
n6
)
- 定义数量级 (这里的
<<
表示左移操作,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
)