• go 基础概念-变量和类型使用注意事项


    在 Goland 语言中,变量是存储数据的容器,而类型定义了变量可以存储的数据种类和可以对变量执行的操作。以下是在使用 Go 变量和类型时的一些注意事项:

    变量声明

    • 显式声明:使用 var 关键字显式声明变量类型。
    • 类型推断:在函数内部,可以使用 := 进行类型推断,省去显式指定类型。

    变量作用域

    • 全局变量:全局变量在整个程序包内都是可见的。
    • 局部变量:局部变量只在声明它们的函数体内可见。

    初始化

    • 零值:未初始化的变量将自动初始化为其类型的零值。
    • 初始化表达式:可以在声明时使用初始化表达式赋予变量初始值。

    变量命名

    • 清晰性:变量名应清晰地表达变量的用途。
    • 简洁性:变量名应尽量简洁,但不失清晰性。

    变量作用

    • 避免全局变量:尽量减少全局变量的使用,以降低耦合性。
    • 局部变量:尽量使用局部变量,它们有助于限制变量的作用域,使代码更安全。

    类型转换

    • 显式转换:需要显式进行类型转换,不能隐式转换。
    • 转换语法:使用 Type{value} 的语法进行类型转换。

    指针与变量

    • 指针:指针变量可以修改其所指向的变量的值。
    • 逃逸分析:注意指针可能会影响变量的存储位置(栈或堆),进而影响性能。

    数组与切片

    • 数组:数组的长度是固定的,声明时必须指定长度。
    • 切片:切片是基于数组的,拥有动态长度,更灵活。

    Map 使用

    • 不可比较:map 类型不能用于 Go 中的比较操作。
    • 键的类型:map 的键必须是支持比较操作的类型,如字符串、整数等。

    字符串

    • 不可变性:字符串一旦创建,其内容就不能改变。
    • 连接操作:字符串连接操作可能会产生多个临时字符串,影响性能。

    结构体

    • 零值:结构体的每个字段都会被初始化为其类型的零值。
    • 匿名字段:使用匿名字段可以继承其他类型的字段和方法。

    接口

    • 类型断言:对接口变量进行类型断言时要格外小心,错误的断言会导致运行时 panic。
    • 空接口:空接口 interface{} 可以存储任何类型的值,但使用时需要进行类型断言。

    错误处理

    • 错误变量:错误变量通常是 error 类型,应检查并适当处理。

    包和变量

    • 包名:导入的包通过包名来引用,包名通常是其最后一个路径元素的小写形式。
    • 包初始化:包中所有初始化器(init函数)按照它们在代码中出现的顺序执行。

    运行时类型断言

    • Type Switch:使用 switch 语句进行类型断言可以更安全地处理多个可能的类型。

    内存分配

    • 堆分配:变量的分配可能发生在栈上或堆上,这取决于变量的作用域和是否发生逃逸。

    编译时常量

    • 编译时常量:常量的值在编译时确定,且必须是内建类型的值。

    并发安全

    • 并发访问:共享变量的并发访问需要同步,避免竞态条件。
  • 相关阅读:
    黑马JVM总结(二十四)
    QCN6274 VS QCN9274|QCN9074 VS QCN6122|Exploring the World of Wi-Fi 6E
    Docker的一些理解
    OAuth2基础概念篇
    nRF52832闪存FDS使用(SDK17.1.0)
    传递datetime数据类型至前端 时分秒消失
    程序性能分析
    Nature工作-通用时序(PHM)大模型//(构思中)
    高速公路车路协同网络需求研究
    static在不同位置定义变量居然还有不同的含义?
  • 原文地址:https://blog.csdn.net/u012728971/article/details/138169531