文章目录

  • 前言
  • 一、变量和常量
  • 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
    )

iota
iotago语言的常量计数器,只能在常量的表达式中使用。 iotaconst关键字出现时将被重置为0const中每新增一行常量声明将使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.基本类型介绍

go语言使用别的包里的变量 go语言变量类型_后端

1.1.整型

整型分为以下两个大类: 按长度分为:int8int16int32int64对应的无符号整型:uint8uint16uint32uint64

1.2.浮点型

Go语言支持两种浮点型数:float32float64。这两种浮点型数据格式遵循IEEE 754标准: float32 的浮点数的最大范围约为3.4e38,可以使用常量定义:math.MaxFloat32float64 的浮点数的最大范围约为 1.8e308,可以使用一个常量定义:math.MaxFloat64

1.3.复数

complex64complex128 复数有实部和虚部,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语言中的变量、常量以及基本类型。