Go学习笔记-变量

简介: Go学习笔记-变量

Go学习笔记-变量


在数学概念中,变量(variable)表示没有固定值且可改变的数。但从计算机系统实现角度来看,变量是一段或多段用来存储数据的内存。

Go是一门很有意思的编程语言。虽算不得优雅,但也不浅薄。自C一脉相承,又吸收了些时髦的东西。最重要的是,它依旧简单。我喜欢简单,平日里也是竭尽所能将复杂的东西简单化。

有关Go的宣传语已经太多,优点或缺点都能罗列出长长的清单。我甚至不知道该如何做才能堆砌出本章内容,所以一直拖到全书的最后才去完成。

作为静态类型语言,Go变量总是有固定的数据类型,类型决定了变量内存的长度和存储格式。我们只能修改变量值,无法改变类型。

通过类型转换或指针操作,我们可用不同方式修改变量值,但这并不意味着改变了变量类型。

因为内存分配发生在运行期,所以在编码阶段我们用一个易于阅读的名字来表示这段内存。实际上,编译后的机器码从不使用变量名,而是直接通过内存地址来访问目标数据。保存在符号表中的变量名等信息可被删除,或用于输出更详细的错误信息。

关键字var用于定义变量,和C不同,类型被放在变量名后。另外,运行时内存分配操作会确保变量自动初始化为二进制零值(zero value),避免出现不可预测行为。如显式提供初始化值,可省略变量类型,由编译器推断。

var x int         // 自动初始化为0
var y=false         // 自动推断为bool类型

只是要注意,简短模式(short variable declaration)有些限制:

定义变量,同时显式初始化。不能提供数据类型。

只能用在函数内部。

对于粗心的新手,这可能会造成意外错误。比如原本打算修改全局变量,结果变成重新定义同名局部变量。

var x=100
func main() {
println(\&x,x)       // 全局变量
x:= "abc"          // 重新定义和初始化同名局部变量
println(\&x,x)
}

退化赋值的前提条件是:最少有一个新变量被定义,且必须是同一作用域。

在处理函数错误返回值时,退化赋值允许我们重复使用err变量,这是相当有益的。

赋值操作,必须确保左右值类型相同。

未使用错误

编译器将未使用局部变量当作错误。不要觉得麻烦,这有助于培养良好的编码习惯。


相关文章
|
4天前
|
存储 安全 编译器
掌握Go语言:探索Go语言中的变量,灵活性与可读性的完美结合(4)
掌握Go语言:探索Go语言中的变量,灵活性与可读性的完美结合(4)
|
4天前
|
监控 安全 Java
Go语言学习笔记(一)
Go语言学习笔记(一)
108 1
|
4天前
|
Go
Go入门速成-定义变量
Go入门速成-定义变量
|
4天前
|
JSON JavaScript Go
Go 语言学习指南:变量、循环、函数、数据类型、Web 框架等全面解析
掌握 Go 语言的常见概念,如变量、循环、条件语句、函数、数据类型等等。深入了解 Go 基础知识的好起点是查阅 Go 官方文档
550 2
|
6月前
|
Cloud Native 程序员 编译器
你知道 GO 中什么情况会变量逃逸吗?
你知道 GO 中什么情况会变量逃逸吗?
|
4天前
|
Go
【Go语言专栏】Go语言的并发编程进阶:互斥锁与条件变量
【4月更文挑战第30天】本文探讨了Go语言中的互斥锁(Mutex)和条件变量(Condition Variable)在并发编程中的应用。互斥锁用于保护共享资源,防止多goroutine同时访问,通过Lock和Unlock进行控制,需注意避免死锁。条件变量则允许goroutine在条件满足时被唤醒,常与互斥锁结合使用以提高效率。了解和掌握这些同步原语能提升Go并发程序的性能和稳定性。进一步学习可参考Go官方文档和并发模式示例。
|
4天前
|
存储 Go 开发者
【Go语言专栏】Go语言中的变量、常量和数据类型
【4月更文挑战第30天】Go语言以其简洁、高效和并发性备受开发者喜爱。本文聚焦变量、常量和数据类型。变量声明可使用`var`或类型推断,如`var a int = 10`和`b := "hello"`。常量用`const`声明,不可变,如`const pi float64 = 3.1415926`。数据类型包括基本类型(数值、布尔、字符串)和复合类型(数组、切片、结构体、接口)。理解这些基础将助力开发者深入学习Go语言的高级特性。
|
4天前
|
数据可视化
R语言多元(多变量)GARCH :GO-GARCH、BEKK、DCC-GARCH和CCC-GARCH模型和可视化
R语言多元(多变量)GARCH :GO-GARCH、BEKK、DCC-GARCH和CCC-GARCH模型和可视化
|
4天前
R语言多变量广义正交GARCH(GO-GARCH)模型对股市高维波动率时间序列拟合预测
R语言多变量广义正交GARCH(GO-GARCH)模型对股市高维波动率时间序列拟合预测
|
4天前
|
存储 分布式计算 算法
GO学习笔记之表达式
GO学习笔记之表达式
34 1