Go 语言部分语法特性1 | 豆包MarsCode AI 刷题

46 阅读2分钟

Go语言的变量和常量

声明

  • 显式声明:Go 使用 var 关键字声明变量,变量类型可以显式指定。
  • 简洁声明(短声明):Go 提供了简洁的语法 := 来声明并初始化变量,不需要显式使用 var 和类型。

优势

  • 简洁性:通过简洁声明语法,开发者可以快速定义局部变量,减少了冗长的类型声明,使得代码更加直观。
  • 类型推断:Go语言具有强类型系统,但在局部变量声明时,编译器会根据赋值自动推断出变量的类型,避免了冗余的类型声明。
  • 自动零值:Go语言的变量在声明时会自动赋予零值,无论开发者是否显式初始化。这样避免了因变量未初始化而引发的错误,提升了程序的健壮性。

Go语言的循环结构

Go只有一种循环语法,适用于各种循环需求。

  • for循环(经典形式):包括初始化语句、条件判断语句和迭代语句,适用于标准的循环结构。
  • for循环(条件形式):不包括初始化和迭代部分,只包含条件判断部分,相当于其他语言中的while循环。循环会持续执行,直到条件不成立为止。
  • for循环(无限循环):Go语言中的for可以不写条件表达式,这样就会导致无限循环。通常与break语句配合使用来跳出循环。
  • range循环:range是for循环的一种变体,通常用于遍历数组、切片、字符串、map等数据结构。range返回的是元素的索引和元素值。

Go语言的数组和切片的联系和区别

  • 大小固定 vs 动态:数组的大小是固定的,在创建时就已经确定,而切片的大小和容量是动态变化的。
  • 类型差异:数组的类型包括了它的长度,因此 int[5] 和 int[10] 是不同的类型。而切片的类型仅依赖于元素类型,[]int 是一个类型,可以代表任何长度的整型切片。
  • 内存管理:数组在内存中占用的是连续的空间,且在初始化时就已分配好所有元素的空间。切片则是对底层数组的一个视图,切片的长度和容量可能会随着程序的需求而发生变化。
  • 拷贝行为:当数组作为参数传递时,Go 会拷贝整个数组,而切片作为参数传递时只是传递底层数组的引用,因此修改切片会影响到原数组。

总结

Go 语言是一个简洁、高效、并发友好的语言,适用于构建大规模、高性能的应用程序,尤其是在云计算、微服务、容器化和分布式系统领域。