文章目录
- 前言
- 一、变量和常量
- 1.变量
- 2.常量
- 二、基本类型
- 1.基本类型介绍
- 1.1.整型
- 1.2.浮点型
- 1.3.复数
- 1.4.布尔类型
- 1.5.字符串
- 总结
前言
上一篇文章只是简单的介绍了一下GO的一些常识,这篇文章将会更细致的解读一下GO中的变量、常量以及基本类型
一、变量和常量
1.变量
(1)变量类型
变量的功能是存储数据,不同变量保存的数据类型可能会不一样。常见变量的数据类型:整型、浮点型、布尔型等。
GO语言中每一个变量都有自己的类型,并且变量必须经过声明才能使用
(2)变量声明
GO语言的变量声明格式为
标准变量声明:
var 变量名 变量类型
例:
var name string
var age int
批量变量声明:
例:
var(
name string
age int
ok bool
)
(3)变量初始化
Go语言在声明变量的时候,会自动对变量对应的内存区域进行初始化操作。每个变量会被初始化成其类型的默认值,例如: 整型和浮点型变量的默认值为0。 字符串变量的默认值为空字符串。 布尔型变量默认为false
。 切片、函数、指针变量的默认为nil
。
变量初始化的标准格式:
var 变量名 变量类型 = 表达式
例:
var name string = "Gogo"
var age int = 20
类型推导:
编译器会根据等号右边的值来推导变量的类型完成初始化。
例:
var name = "Gogo"
var age = 20
短变量声明:
在函数内部,可以使用更简略的 := 方式声明并初始化变量。
func main() {
name := "GOgo"
age := 20
}
匿名变量:
在使用多重赋值时,如果想要忽略某个值,可以使用匿名变量。
匿名变量用一个下划线_表示,例如:
func hello() (int, string) {
return 20, "Gogo"
}
func main() {
age, _ := hello()
_, name := hello()
fmt.Println("age=", age)
fmt.Println("name=", name)
}
2.常量
相对于变量,常量是恒定不变的值,多用于定义程序运行期间不会改变的那些值。 常量的声明和变量声明非常类似,只是把var
换成了const
,常量在定义的时候必须赋值。
const pi = 3.1415
const e = 2.7182
或者
const (
pi = 3.1415
e = 2.7182
)
注意
常量在声明之后便不能再发生变化const
同时声明多个常量时,如果省略了值则表示和上面一行的值相同。 例如:
const (
n1 = 100 //100
n2 //100
n3 //100
)
iotaiota
是go
语言的常量计数器,只能在常量的表达式中使用。 iota
在const
关键字出现时将被重置为0
。const
中每新增一行常量声明将使iota
计数一次(iota
可理解为const
语句块中的行索引)。 使用iota
能简化定义,在定义枚举时很有用。
举个例子:
const (
n1 = iota //0
n2 //1
n3 //2
n4 //3
)
多个iota定义在一行
const (
a, b = iota + 1, iota + 2 //1,2
c, d //2,3
e, f //3,4
)
二、基本类型
1.基本类型介绍
1.1.整型
整型分为以下两个大类: 按长度分为:int8
、int16
、int32
、int64
对应的无符号整型:uint8
、uint16
、uint32
、uint64
1.2.浮点型
Go语言支持两种浮点型数:float32
和float64
。这两种浮点型数据格式遵循IEEE 754
标准: float32
的浮点数的最大范围约为3.4e38
,可以使用常量定义:math.MaxFloat32
。 float64
的浮点数的最大范围约为 1.8e308
,可以使用一个常量定义:math.MaxFloat64
。
1.3.复数
complex64
和complex128
复数有实部和虚部,complex64
的实部和虚部为32位,complex128
的实部和虚部为64位。
1.4.布尔类型
Go语言中以bool
类型进行声明布尔型数据,布尔型数据只有true
(真)和false
(假)两个值。
注意
(1)布尔类型变量的默认值为false。
(2)Go 语言中不允许将整型强制转换为布尔型.
(3)布尔型无法参与数值运算,也无法与其他类型进行转换。
1.5.字符串
Go语言中的字符串以原生数据类型出现,使用字符串就像使用其他原生数据类型(int、bool、float32、float64 等)
一样。 Go 语言里的字符串的内部实现使用UTF-8编码。 字符串的值为双引号(")中的内容,可以在Go语言的源码中直接添加非ASCII
码字符,例如:
s1 := "hello"
s2 := "你好"
多行字符串
Go语言中要定义一个多行字符串时,就必须使用反引号(``)字符:
s1 := `Hello
World
`
字符串常用操作
len(str) 求长度
+或fmt.Sprintf 拼接字符串
strings.Split 分割
strings.Contains 判断是否包含
strings.HasPrefix,strings.HasSuffix 前缀/后缀判断
strings.Index(),strings.LastIndex() 子串出现的位置
strings.Join(a[]string, sep string) join操作
修改字符串
要修改字符串,需要先将其转换成[]rune
或[]byte
,完成后再转换为string
。无论哪种转换,都会重新分配内存,并复制字节数组。
func changeString() {
s1 := "hello"
// 强制类型转换
byteS1 := []byte(s1)
byteS1[0] = 'H'
fmt.Println(string(byteS1))
s2 := "博客"
runeS2 := []rune(s2)
runeS2[0] = '狗'
fmt.Println(string(runeS2))
}
总结
以上就是今天要讲的内容,本文进一步介绍了GO语言中的变量、常量以及基本类型。