• Go 语言学习之变量

01

命名规则

 

Go 中命名规则是,名称以字母或下划线开头,后面可跟任意数量的字符、数字和下划线,字符区分大小写,名称本身没有长度限制,但是 Go 的编程风格倾向于使用短名称,特别是局部变量,Go 中有 25 个关键字,这些关键字不可用来命名。

 

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

 

02

声明变量

 

  • 声明变量的通用形式

var name type = expression

使用 var 关键字,后面跟变量的名称、类型和表达式。

  • 声明变量的省略形式

var totalScore intvar totalScore2 = 678

省略形式声明变量,类型和表达式可以省略其一,但是不能都省略。省略表达式,它的初始值是类型的零值,省略类型,它的初始化表达式决定变量的类型。

  • 声明变量列表

var a, b, c intvar d, e, f int = 1, 2, 3var g, h, i = 3.14, "hello", true

声明变量列表,省略类型,以初始化表达式决定变量的类型,允许声明多个不同类型的变量。

  • 调用有返回值函数的形式声明变量

var myname = name("lucy")func name(name string) string {  var str string = "My name is " + name  return str}

 

03

声明短变量

 

在函数中,短变量声明用来声明和初始化局部变量。

声明一个整数类型的局部变量:

totalScore := 123

声明一个短变量列表:

x, y := 1, 2

注意:短变量声明,左侧必须至少声明一个新变量。

 

04

指针

 

指针的值是一个变量的地址。一个指针代表一个变量的值所保存的位置。指针可以在不知道变量名的情况下,读取和更新变量的值。

var x int

声明一个整型的变量 x,&x 获取一个指向变量 x 的指针,它的类型是整型的指针类型(*int)

 

  z := 3  p := &z  fmt.Printf("z=%d\n", z)  fmt.Printf("p=%p\n", p)  *p = 4  fmt.Printf("z=%d\n", z)  fmt.Printf("p=%p\n", p)

p 是指向 z 的指针,是 z 的地址,它的类型是整型的指针类型(*int),*p 是变量 z 的值,是变量 z 的别名,可以读取和更新变量 z。

 

指针类型的零值是 nil,指针是可比较的,两个指针只有指向同一个变量,或者都是 nil 的情况下才相等。

 

完整代码:

图片

输出结果:

totalScore=678totalScore2=0totalScore3=345a=0 b=0 c=0d=1 e=2 f=3g=3.14 h=hello i=trueMy name is lucytotalScore4=123x=1 y=2z=3p=0xc000018118z=4p=0xc000018118a1 和 a2 相等,a1 和 a2 指向同一变量aa1 和 aa2 不相等
 

Go 中命名规则是,名称以字母或下划线开头,后面可跟任意数量的字符、数字和下划线,字符区分大小写,名称本身没有长度限制,但是 Go 的编程风格倾向于使用短名称,特别是局部变量,Go 中有 25 个关键字,这些关键字不可用来命名。

 

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

 

02

声明变量

 

  • 声明变量的通用形式

var name type = expression

使用 var 关键字,后面跟变量的名称、类型和表达式。

  • 声明变量的省略形式

var totalScore intvar totalScore2 = 678

省略形式声明变量,类型和表达式可以省略其一,但是不能都省略。省略表达式,它的初始值是类型的零值,省略类型,它的初始化表达式决定变量的类型。

  • 声明变量列表

var a, b, c intvar d, e, f int = 1, 2, 3var g, h, i = 3.14, "hello", true

声明变量列表,省略类型,以初始化表达式决定变量的类型,允许声明多个不同类型的变量。

  • 调用有返回值函数的形式声明变量

var myname = name("lucy")func name(name string) string {  var str string = "My name is " + name  return str}

 

03

声明短变量

 

在函数中,短变量声明用来声明和初始化局部变量。

声明一个整数类型的局部变量:

totalScore := 123

声明一个短变量列表:

x, y := 1, 2

注意:短变量声明,左侧必须至少声明一个新变量。

 

04

指针

 

指针的值是一个变量的地址。一个指针代表一个变量的值所保存的位置。指针可以在不知道变量名的情况下,读取和更新变量的值。

var x int

声明一个整型的变量 x,&x 获取一个指向变量 x 的指针,它的类型是整型的指针类型(*int)

 

  z := 3  p := &z  fmt.Printf("z=%d\n", z)  fmt.Printf("p=%p\n", p)  *p = 4  fmt.Printf("z=%d\n", z)  fmt.Printf("p=%p\n", p)

p 是指向 z 的指针,是 z 的地址,它的类型是整型的指针类型(*int),*p 是变量 z 的值,是变量 z 的别名,可以读取和更新变量 z。

 

指针类型的零值是 nil,指针是可比较的,两个指针只有指向同一个变量,或者都是 nil 的情况下才相等。

 

完整代码:

图片

输出结果:

totalScore=678totalScore2=0totalScore3=345a=0 b=0 c=0d=1 e=2 f=3g=3.14 h=hello i=trueMy name is lucytotalScore4=123x=1 y=2z=3p=0xc000018118z=4p=0xc000018118a1 和 a2 相等,a1 和 a2 指向同一变量aa1 和 aa2 不相等