第二章 变量、常量和数据类型

变量是对一块内存空间的命名,程序可以通过定义一个变量来申请一块内存空间。然后可以通过引用变量名来使用这块存储空间。

 

2.1.1 变量命名

Go语言中的变量名、常量名、类型名、函数名和包名等所有的命名和C语言一样都遵循这样一个简单的命名规则:一个名字必须以一个字母或下划线开头,后面可以跟任意数量的字母、数字或下划线。对于字母区分大小写,例如:nameName是两个不同的名字。

命名不能与关键字相同,Go语言提供了25个关键字,只能在特定的语法中使用。

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语言还有大约30多个预定义的名字,主要用于内建的常量类型和函数。这些名字不是关键字,可以重新定义和使用,虽然在一些特殊场景中重新定义是有意义的,但建议尽量不要重新定义,以造成语义混乱问题。

内建常量

 

true false iota nil

 

内建类型

 

int int8 int16 int32 int64

 

uint uint8 uint16 uint32 uint64 uintptr

 

float32 float64 complex128 complex64

 

bool byte rune string error

 

内建函数

 

make len cap new append copy close delete

 

complex real imag

 

panic recover

 

 

2.1.2 变量声明

1 一般声明格式

使用var可以创建一个特定类型的变量。变量声明的一般语法如下:

var 变量名 类型 =  表达式

 

其中“类型”或“=表达式”两个部分可以省略其中的一个。如果省略的是类型信息,那么将根据初始化表达式来推导变量的类型。如果表达式省略,将用零值初始化该变量。

var i int = 1

var j int   //j的值初始化为0

var k = 10  // k的类型自动推导

 

如果一个名字在函数内部定义,那么它只能在函数内部使用,如果在函数外部定义,那么在当前包的所有文件都可以访问。名字首字母的大小写决定了它在包外的可见性,首字母大写在包外可以访问。包本身的名字一般总是用小写字母。

在包级别声明的变量会在main入口函数执行之前完成初始化,局部变量将在声明语句被执行的时候完成初始化。如果没有显示初始化,那么将用零值初始化该变量。一个变量声明后没有使用也会引起编译错误。

2 简短变量声明

名字 := 表达式,变量的类型根据表达式自动推导。由于使用简单灵活,被广泛用于大部分的局部变量的声明和初始化。注意,简短变量声明不能用于包级别的变量声明。

i := 100

 

 

3 多个变量声明

var i, j, k int = 1, 2, 3

var m, n int

var a, b, c = 1, 2, 3

d, e, f := 1, 2, 3

name, age := "张三", 20

 

也可以这样写:

var (

     name string

     age  int

)

 

 

2.1.3 赋值

1 简单赋值

赋值语句是更新一个变量的值,最简单的赋值变量名= 新值的表达式

var i int

i = 1      //简单赋值

 

 

2复合赋值运算符

特定的二元算术运算符和赋值语句的复合操作有一个简洁的形式

var i int

i = i + 1

i += 1    //与i = i + 1等价

 

 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpsfxs.html