Go通关02:必须掌握的基础类型

变量声明

  1. var 变量名 类型 = 表达式
    var i int = 10
  2. 类型推导
    var i = 10
    可以根据值的类型来省略变量类型
  3. 声明多个变量
var (
  i int = 0
  k int = 1
)
// 同理类型推导
var (
  i = 0
  k = 1
)

类型int/float64/bool/string 等基础类型都可以被自动推导。

整型

在 Go 语言中,整型分为:

  • 有符号整型:int、int8、int16、int32、int64
  • 无符号整型:uint、uint8、uint16、uint32、uint64

注意:

  1. 有符号整型可以表示负数、零、正数,而无符号整型只能为零和正数。
  2. int 和 uint 这两个没有具体的 bit 大小的整型,他们大小可能是32bit,也可能是64bit,这个取决于硬件设备CPU。
  3. 在整型中,如果能确定int的bit就使用明确的int类型,这一有助于程序的移植性。
  4. 还有一种字节类型 byte,它其实等价于 uint8,可以理解为 uint8 类型的别名,用于定义一个字节,所以字节byte类型也属于整型。

浮点数

浮点数就是含有小数的数字,Go语言中提供了两种精度的浮点数:float32、float64。因为 float64 精度高,浮点计算结果比 float误差要更小,所以它更被常使用。

布尔型

  • 一个布尔值值只有两种:true 和 false。
  • 定义使用:var bf bool = false;使用 bool 关键字定义

字符串

字符串通过类型 string 声明

var s1 string = "hello"
var s2 = "world" //类型推导
var s3 = s1 + s2 //可以通过操作符 + 把字符串串连起来
s1 += s2 //也可以通过 += 运算符操作

零值
零值其实就是一个变量的默认值,Go语言中,如果只声明了一个变量,并没有对其赋值,那么此变量会有一个对应类型的零值。

var b bool // bool型零值是false
var s string // string的零值是""
以下六种类型零值常量都是nil
var a *int
var a []int
var a map[string] int
var a chan int
var a func(string) int
var a error // error是接口

变量的简短声明

变量名:=表达式
在实际项目中,如果能为声明的变量初始化,那么就使用简短的声明方式,这种也是使用最多的。

指针

Go 语言中,指针对应的是变量在内存中存储的位置,也就是说指针的值就是遍历的内存地址。通过 & 可以获取变量的地址,也就是指针。*可以获取地址对应的值。

pi:=&i
fmt.Println(*pi)

常量

常量的值是在编译期就确定好的,确定后不能被修改,可以防止在运行期被恶意篡改。

常量定义

和变量类型,只不过使用关键字 const

const name = "无尘"

在 Go语言中,只允许布尔型、字符串、数字类型这些基础类型作为常量。

iota

iota 是一个常量生成器,可以用来初始化相似规则的常量,避免重复的初始化。

const (
  one = 1
  two = 2
  three = 3
)

//使用 iota
const (
  one = iota+1
  two
  three
)

iota 的初始值是0。

字符串

  1. 字符串和数字互换

Go是强类型语言,不同类型的变量是不能相互使用和计算的。不同类型的变量在进行复制或计算时,需要先进行类型转换。

i := 10
itos := strconv.Itoa(i)
stoi,err := strconv.Atoi(itos)
fmt.Println(itos,stoi,err) //10 10 nil
  1. String 包

string 包是Go SDK提供的一个标准包。用于处理字符串的工具包。包含查找字符串、拆分字符串、去除字符串的空格、判断字符串是否含有某个前缀或后缀。

//判断s1的前缀是否是H
fmt.Println(strings.HasPrefix(s1,"H"))
//在s1中查找字符串o
fmt.Println(strings.Index(s1,"o"))
//把s1全部转为大写
fmt.Println(strings.ToUpper(s1))

更多例子,可以查看 string文档

你可能感兴趣的:(Go通关02:必须掌握的基础类型)