GO语言入门指南:基础语法和常用特性解析(一)
一、变量定义
变量是用于存储数据的单位,不同变量保存的数据类型不同
- 变量声明:用var关键字声明一个变量,随后指定变量名称和类型。
例如:
var age int 声明一个名为age的int类型变量
- 变量赋值:与其他语言相同,均使用=为变量赋值
例如:
age=25
- 变量初始化:此处与其他语言相同,在声明变量的同时也可以给变量赋值以完成变量的初始化
例如:
var name string ="zhangsan"//声明一个名为name的string类型变量,其值为zhangsan
或可以使用一种独特的简短声明,如下:
name:="zhangsan"
-
零值:在Go语言中,如果一个变量没有显示地初始化,它将会被赋予一个零值。根据变量的类型,零值可能是0、false、""(空字符串)nil。
-
匿名变量:使用下划线_表示一个匿名变量,该变量的值将被忽略。匿名变量在编写代码时丢弃不需要的返回值或占位符时很有用。
例如:
_,err := Function() //忽略Function()函数的一个返回值,并将返回的错误储存在err中
二、常量定义
常量是指程序运行期间不可修改的值。常量可以是基本数据类型(如整数、浮点数、布尔值)或字符串类型
- 声明常量:使用const关键字来声明一个常量,并指定常量的名称和值。
例如:
const pi = 3.14159 // 声明一个名为pi的常量并赋值为3.14159
- 显式类型说明:可以为常量提供显式的类型说明。
例如:
const name string = "zhangssan"//声明一个名为name的常量类型,其值为zhangsan
- 多个常量声明:可以同时声明多个常量,并为它们赋予相应的值。此处与其他语言有所不同,可以通过()来对多个常量进行声明
例如:
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。
var example bool
- 整数类型:表示整数值,根据占用内存空间的大小可以分为多种类型,如:
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):表示一个或多个字符组成的字符串值,字符串是不可变的。
var example string
-
字符类型(rune):表示单个Unicode字符,和int32类型等价。
-
错误类型(error):表示一个错误的信息。
-
指针类型(Pointer):用于存储内存地址。实质与c语言、c++类似,命名方式如图上面一样
-
数组类型(Array):表示具有固定长度且元素类型相同的数据结构。
-
切片类型(Slice):表示一个可变长度的序列,底层为数组。用make来声明
s:=make([]string,3) 表示声明一个长度为3的string类型的切片
- 映射类型(Map):表示键值对的无序集合。同样使用make声明
m:=make(map[string]int) 表示声明一个键为string类型,值为int类型的映射
-
结构体类型(Struct):表示具有一组字段的数据结构。与其余语言相同
-
接口类型(Interface):表示一组方法的集合。
-
函数类型(Function):表示函数的类型。
四、个人感受
go语言的变量、常量与其他语言相比没有太大的差别,只是在声明时有所不同,需要在使用时加以注意