第一部分 变量使用
- 变量的功能是存储数据,不同变量保存数据类型不同。常见的变量类型有整形(int)、浮点型(float)、布尔型(bool)等。
- 变量声明:使用
var关键字来声明一个变量,并指定变量的名称和类型。例如:
var age int // 声明一个名为age的整数变量
- 变量赋值:可以使用等号
=将一个值赋给变量。例如:
age = 25 // 给age变量赋值为25
- 变量初始化:在声明变量的同时进行赋值,称为变量的初始化。可以使用等号
=将一个值赋给变量。例如:
var name string = "Wanglaoji" // 声明一个名为name的字符串变量并初始化为"Gopher"
或者使用简短声明:
name := "wanglaoji" // 声明一个名为name的字符串变量并初始化为"Gopher"
- 多个变量同时赋值:可以同时给多个变量赋值。例如:
var a, b int
a = 10
b = 20
或者使用简短声明:
a, b := 10, 20
- 类型推断:在初始化变量时,Go语言可以根据右侧的值推断出变量的类型,因此可以省略变量的类型。例如:
var count = 5 // 推断count为int类型
或者使用简短声明:
count := 5 // 推断count为int类型
- 零值:在Go语言中,如果一个变量没有显示地初始化,它将会被赋予一个零值。根据变量的类型,零值可能是0、false、""(空字符串)或nil。
- 匿名变量:使用下划线
_表示一个匿名变量,该变量的值将被忽略。匿名变量在编写代码时丢弃不需要的返回值或占位符时很有用。例如:
_, err := someFunction() // 忽略函数的第一个返回值并将错误保存在err变量中
第二部分 常量使用
- 常量是指程序运行期间不可修改的值。常量可以是基本数据类型(如整数、浮点数、布尔值)或字符串类型。
- 声明常量:使用
const关键字来声明一个常量,并指定常量的名称和值。例如:
const pi = 3.14159 // 声明一个名为pi的常量并赋值为3.14159
- 类型推断:与变量类似,常量在声明时可以根据右侧的值来推断出常量的类型。例如:
const age = 30 // 推断age为int类型
- 显式类型说明:可以为常量提供显式的类型说明。例如:
const name string = "Wanglaoji"
- 多个常量声明:可以同时声明多个常量,并为它们赋予相应的值。例如:
const (
Monday = 1
Tuesday = 2
Wednesday = 3
)
- 枚举常量:通过连续的赋值可以简单实现枚举常量。例如:
const (
red = iota // 0
blue // 1
green // 2
)
在上面的例子中,iota表示自增枚举值的初始值,默认为0,每次出现时会自动递增。
- 常量表达式:常量可以使用常量表达式来定义,常量表达式只能由常量、字面值、运算符和函数调用组成。例如:
const (
secondsPerMinute = 60
minutesPerHour = 60
secondsPerHour = secondsPerMinute * minutesPerHour // 常量表达式
)
- 预定义常量:Go语言预定义了一些重要的常量,例如
true、false和nil。它们分别代表布尔类型的真和假,以及各种类型的零值。
-
在使用常量时,需要注意以下几点:
-
- 常量的值在编译时确定,并且不能被修改。
-
- 常量可以在任何地方使用,包括函数、方法和代码块。
-
- 常量的值必须是编译时可确定的表达式。
第三部分 基本数据类型
-
布尔类型(bool):表示真或假的值,只有两个可能的取值:
true和false。 -
整数类型:表示整数值,根据占用内存空间的大小可以分为多种类型,如:
- int8、int16、int32、int64:有符号整数类型,分别占用8、16、32、64位的内存空间。
- uint8、uint16、uint32、uint64:无符号整数类型,分别占用8、16、32、64位的内存空间。
- int、uint:根据计算机架构选择合适的大小,在32位系统上是32位,在64位系统上是64位。
-
浮点数类型:表示带小数部分的实数值,有两种精度的浮点数类型:
- float32:单精度浮点数,占用32位内存空间。
- float64:双精度浮点数,占用64位内存空间。
-
复数类型:表示具有实部和虚部的复数值,有两种精度的复数类型:
- complex64:由两个float32值组成的复数类型。
- complex128:由两个float64值组成的复数类型。
-
字符串类型(string):表示一个或多个字符组成的字符串值,字符串是不可变的。
-
字符类型(rune):表示单个Unicode字符,和int32类型等价。
-
错误类型(error):表示一个错误的信息。
-
指针类型(Pointer):用于存储内存地址。
-
数组类型(Array):表示具有固定长度且元素类型相同的数据结构。
-
切片类型(Slice):表示一个可变长度的序列,底层为数组。
-
映射类型(Map):表示键值对的无序集合。
-
结构体类型(Struct):表示具有一组字段的数据结构。
-
接口类型(Interface):表示一组方法的集合。
-
函数类型(Function):表示函数的类型。
在Go语言中,变量必须显式声明其类型,可以使用关键字var或简短声明操作符:=来声明和初始化变量。例如:
var age int = 25 // 使用var关键字声明一个整数变量并初始化为25
name := "Gopher" // 使用简短声明操作符声明一个字符串变量并初始化为"Gopher"
个人思考
在学习使用变量和常量的过程中,我意识到了变量的灵活及其命名的重要性,即通过使用变量,我们可以动态地改变数据的值,并在程序执行过程中使用它们,并且良好的变量命名是编写清晰、易读代码的关键;同时常量的不可变性和一致性也给我留下了深刻印象,常量在程序执行过程中是不可变的,这增加了代码的安全性和可预测性,通过一致的命名约定,我们可以更容易地识别和理解哪些值是常量,并将其与变量区分开来。比如常量名称通常采用全大写字母和下划线的形式,以增加可读性和一致性。
实践出真知!希望我的思考感悟对大家的学习和理解有所帮助!