Go文件基本结构
package mainimport "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 selectcase defer go map structchan else goto package switchconst fallthrough if range typecontinue for import return var
此外,Go语言中还有37个保留字。
Constants: true false iota nilTypes: int int8 int16 int32 int64uint uint8 uint16 uint32 uint64 uintptrfloat32 float64 complex128 complex64bool byte rune string errorFunctions: make len cap new append copy close deletecomplex real imagpanic recover
变量
变量(variable),功能是存储数据。不同的变量保存的数据类型可能会不同。
- 常见的数据类型:整数型,浮点型,布尔型等。
- Go中每一个变量都有数据类型,使用前必须经过声明。
变量的声明标准
同一作用域内不支持重复声明,且变量声明后必须使用,推荐使用驼峰命名发
格式
var (变量名) (变量数据类型)
栗子
//变量声明var name string //字符串var age int //整型var isOK bool //布尔类型//批量var {name stringage intisOK bool}
声明变量,指定初始值
var name1 string = "芜湖"var age1 int =45var 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.14159const e =2.7
- 常量批量声明
const (n1 = 100n2 //常量名称后没有跟值简写同第一个变量值n3)
iotaiota是go语言的常量计数器,只能在常量的表达式中使用。- iota在const关键字出现时将被重置为0。const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)。 使用iota能简化定义,在定义枚举时很有用。
const (n1 = iota //0n2 //1_ //跳过一个值n4 //3n5 = 100 //100 插队n6)
- 定义数量级 (这里的
<<表示左移操作,1<<10表示将1的二进制表示向左移10位,也就是由1变成了10000000000,也就是十进制的1024。同理2<<2表示将2的二进制表示向左移2位,也就是由10变成了1000,也就是十进制的8。)
const (_ = iotaKB = 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,2c, d //2,3e, f //3,4)
