Golang 变量类型及其声明定义

变量类型

在Go语言中,变量可以是多种不同的类型。这些类型可以分为几个大类:

基本类型:

  • 布尔型 (bool)
  • 字符串 (string)
  • 数字类型:
  • 整型 (int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64, uintptr)
  • 浮点型 (float32, float64)
  • 复数型 (complex64, complex128)

其他值类型:

  • 数组
  • 结构体 (struct)
  • 引用类型:
  • 指针 (*T)
  • 切片 ([]T)
  • 映射 (map[K]V)
  • 通道 (chan T)

接口类型:

  • 接口 (interface{})

函数类型:

  • 函数 (func)

这些类型可以组合和使用,形成更复杂的数据结构。例如,你可以有一个指向数组的指针,或者一个包含函数的结构体。一些类型,如切片、映射和通道,有特殊的内置函数或行为。

在声明变量时,如果没有明确初始化,则变量会被赋予其类型的零值。例如,布尔型的零值是false,整型是0,指针是nil等。

这是一些声明不同类型变量的例子:

var b bool // 布尔型,默认值为false

var s string // 字符串,默认值为""(空字符串)

var i int // 整型,默认值为0
var f float64 // 浮点型,默认值为0.0

var c complex128 // 复数型,默认值为0 + 0i

var arr [5]int // 数组,默认每个元素为0

type Person struct {
    Name string
    Age  int
}
var p Person // 结构体,默认每个字段为其类型的零值

var ptr *int // 指针,默认值为nil

var slice []int // 切片,默认值为nil

var m map[string]int // 映射,默认值为nil

var ch chan int // 通道,默认值为nil

var intf interface{} // 接口,默认值为nil

var funcVar func(int) int // 函数,默认值为nil

声明和定义

在Go语言中,变量可以通过多种方式声明和定义。以下是一些常见的方法:

  1. 使用var关键字声明变量,类型在变量名之后:
var x int
  1. 声明变量并初始化:
var y int = 10
  1. 类型推断(不显式指定类型,而是通过初始化值推断类型):
var z = 20
  1. 短变量声明(只能在函数内部使用):
a := 30
  1. 声明多个变量:
var b, c int = 40, 50
  1. 分组声明变量(通常用于全局变量):
var (
    d int
    e bool
)
  1. 声明常量(常量不能使用短变量声明语法):
const pi float64 = 3.14159
  1. 声明一个指针变量,并初始化为nil:
var p *int
  1. 声明一个指针变量,并使用new关键字分配内存:
var pointer = new(int)

这些是Go语言中变量声明和定义的基本方式。在Go中,通常推荐尽可能使用短变量声明:=,因为它使代码更加简洁。然而,var关键字在声明全局变量、声明而不初始化、以及需要明确指定变量类型时仍然非常有用

命名规范

Go语言中的命名规范遵循一些简单的原则,这些原则有助于保持代码的可读性和一致性:

  1. 通用规则:
  • 使用驼峰命名法(CamelCase)。
  • 包名应当使用小写字母,不使用下划线或驼峰命名法。
  • 保持简洁明了,尽量使用描述性的名称。
  1. 变量名:
  • 局部变量一般使用短小的名字,如i、j、k对于迭代器;v对于值等。
  • 全局变量则使用更描述性的名称。
  • 变量名应始终使用小写字母开头的驼峰命名法,除非导出变量。
  1. 常量名:
  • 常量名应使用大写字母开头的驼峰命名法。
  • 对于枚举类型的常量,可以使用大写字母和下划线的组合。
  1. 函数名和方法名:
  • 函数名和方法名使用大写字母开头的驼峰命名法,以示其可导出性。
  • 私有函数和方法名应使用小写字母开头。
  1. 类型名:
  • 类型名(包括结构体、接口、类型别名和类型定义)使用大写字母开头的驼峰命名法,表示可以被导出。
  • 私有类型名应使用小写字母开头。
  1. 包名:
  • 包名应当总是使用小写字母。
  • 当包名包含多个单词时,不使用下划线或驼峰命名法,而是将单词连在一起(如net/http)。
  1. 接口名:
  • 接口名通常以er后缀结尾,如Reader、Writer,但这不是硬性规则。
  1. 错误处理:
  • 在错误处理中,错误变量通常命名为err。
  1. 导出与非导出:
  • 在Go中,如果一个变量、函数、类型等的名称以大写字母开头,它就是可导出的(即其他包可以访问)。
  • 如果以小写字母开头,则为包私有,只能在同一个包内访问。

你可能感兴趣的:(golang)