Go(Golang)_03_变量

@

变量管理

变量:存储指定值或计算结果的特殊字符

1)变量的声明格式分为:var关键词声明、短变量声明

2)Go中类型转换格式:数据类型(被转换对象)

3)Go中不存在未初始化的对象



类型转换需注意:

1)interface{}数据类型转换方式为:被转换对象.(数据类型)

2)int类型转换为string类型时会转化为ASCII对应符号(应使用strconv包)

3)string类型和[]byte类型互相转换(但string转换为[]byte时需指定元素个数)



Go中仅声明变量而不进行初始化时,编译器会将其初始化为对应类型的零值

变量类型 零值
0
字符串 空字符串
布尔 false
指针 nil
引用 底层数据结构初始化为对应类型的零值
声明为零值的引用 nil

//声明:仅创建而未初始化(定义:创建的同时进行初始化)

//不可对仅声明的指针进行赋值操作


var关键词

var关键词:通过var关键词声明/定义对象

1)可同时定义多个对象(用“,”分隔);

//也可在var关键词后紧跟()中同时定义多个对象



var 对象名 数据类型 = 初始值

1)若省略数据类型,则对象的类型默认和初始值的数据类型相同;

2)若省略初始值,则默认初始化未对应类型的零值;

3)数据类型和初始值不可同时省略;


如:通过结构字面量声明定义多个变量,并输出其值

1)编写程序;
在这里插入图片描述
2)运行结果;
在这里插入图片描述
//同时定义多个对象的形式一般用于接收返回多个值的函数


短变量

短变量声明:=):Go中同时创建和初始化对象的特殊符号

1)短变量声明中必须指定初始值(用于确定其对象的类型);

2)短变量声明作用于已声明的对象时,会重新声明对象;

3)短变量声明可同时作用于多个对象(“,”分隔);


短变量声明使用格式:

对象1, 对象N := 初始值1, 初始值N

使用短变量声明须知:

1)短变量声明不可仅用于赋值操作,会导致pain;

2)短变量声明用于不同作用域下可能导致创建同名变量;

3)短变量声明左侧必须具有新变量(全部重新声明会导致panic);

4)短变量声明仅能用于函数中(不能用于声明和初始化全局对象);


如:通过短变量声明同时定义两个变量,并输出其值

1)编写程序;

package main

import (
    "fmt"
)

func main() {
    num, str := 2022, "yes"     // 编译器根据值决定对象的数据类型

    if true {
        str, word := 2022, "no"     // 作用域不同导致同名变量
        fmt.Println(str, word)
    }

    fmt.Println(num, str)
}

2)运行结果;
在这里插入图片描述


常量

常量:程序的整个运行周期内保持不变的变量

1)所有常量的数据类型都必须是基础类型;

2)常量一般定义在包级别,且公开的;


常量的定义格式:

const 常量名 = 初始值/表达式

1)常量的数据类型由其初始值/表达式判定;

2)若定义多个常量,可在紧跟const关键词后的()中定义;

3)也可通过常量生成器(iota)指定其常量值(实现枚举效果);



常量生成器(iota):根据常量声明块中代码所处行数进行取值

1)iota的初始默认值为0,可通过加法/移位改变;

2)若使用iota指定表达式且后续无表达式,则会继承该表达式;


如:使用iota在常量声明块中根据表达式指定值

1)编写程序

package main

import (
    "fmt"
)

func main() {
    const (
        bit0, mask0 = 1 << iota, 1<<iota - 1
        bit1, mask1
        _, _
        bit3, mask3
    )

    fmt.Println(bit0, mask0)
    fmt.Println(bit1, mask1)
fmt.Println(bit3, mask3)
fmt.Println(finally)
}

2)运行结果;
在这里插入图片描述

posted @ 2022-04-30 11:59  爱和可乐的w  阅读(31)  评论(0编辑  收藏  举报