侧边栏壁纸
博主头像
张种恩的技术小栈博主等级

行动起来,活在当下

  • 累计撰写 748 篇文章
  • 累计创建 65 个标签
  • 累计收到 39 条评论

目 录CONTENT

文章目录
Go

[转载]Go基础(1)-变量与常量

zze
zze
2020-09-03 / 0 评论 / 0 点赞 / 515 阅读 / 5224 字

不定期更新相关视频,抖音点击左上角加号后扫一扫右方侧边栏二维码关注我~正在更新《Shell其实很简单》系列

命名规则

这里说的命名规则适用于 Go 语言中的变量名、常量名、函数名等等,它们的名字由字母数字和 _(下划线)组成,并且只能以字母和 _ 开头。 比如:abc__123a123

关键字

关键字是指编程语言中预先定义好的具有特殊含义的标识符。 关键字和保留字都不建议用作变量名。

Go 语言中有 25 个关键字,如下:

    break        default      func         interface    select
    case         defer        go           map          struct
    chan         else         goto         package      switch
    const        fallthrough  if           range        type
    continue     for          import       return       var

此外,Go 语言中还有 37 个保留字:

    Constants:    true  false  iota  nil

        Types:    int  int8  int16  int32  int64  
                  uint  uint8  uint16  uint32  uint64  uintptr
                  float32  float64  complex128  complex64
                  bool  byte  rune  string  error

    Functions:   make  len  cap  new  append  copy  close  delete
                 complex  real  imag
                 panic  recover

变量

标准声明

变量声明以关键字 var 开头,变量类型放在变量的后面,行尾无需分号,格式如下:

var 变量名 变量类型

例如:

var name string
var age int
var isOk bool

批量声明

每声明一个变量就需要写 var 关键字会比较繁琐,Go 语言中还支持批量变量声明:

var (
    a string
    b int
    c bool
    d float32
)

标准变量初始化

Go 语言在声明变量的时候,会自动对变量对应的内存区域进行初始化操作。每个变量会被初始化成其类型的默认值,例如:

  • 整型和浮点型变量的默认值为 0
  • 字符串变量的默认值为空字符串。
  • 布尔型变量默认为 false
  • 切片、函数、指针变量的默认为 nil

当然我们也可在声明变量的时候为其指定初始值。变量初始化的标准格式如下:

var 变量名 类型 = 表达式

例:

var name string = "Q1mi"
var age int = 18

或者一次初始化多个变量:

var name, age = "Q1mi", 20

类型推导

有时候我们会将变量的类型省略,这个时候编译器会根据等号右边的值来推导变量的类型完成初始化,比如:

var name = "Q1mi"
var age = 18

短变量声明

函数内部,可以使用更简略的 := 方式声明并初始化变量。

package main

import "fmt"

func main() {
	s1 := "hello"

	fmt.Print(s1)
}

匿名变量

在使用多重赋值时,如果想要忽略某个值,可以使用匿名变量(anonymous variable)。 匿名变量用一个下划线_表示,例如:

package main

import "fmt"
// 定义一个函数返回两个值
func test() (int, string) {
	return 100, "hello"
}

func main() {
	// 使用 _ 在接收多个值时忽略某个值
	n1, _ := test()
	_, s1 := test()
	fmt.Println(n1)
	fmt.Println(s1)
}

匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明(在 Lua 等编程语言里,匿名变量也被叫做哑元变量)。

注意事项

  • 函数外的每个语句都必须以关键字开始(varconstfunc 等)。
  • := 不能使用在函数外。
  • _ 多用于占位,表示忽略值。

常量

基本使用

相对于变量,常量是恒定不变的值,多用于定义程序运行期间不会改变的那些值。 常量的声明和变量声明非常类似,只是把 var 换成了 const,常量在定义的时候必须赋值。

const pi = 3.1415
const e = 2.7182

多个常量也可以一起声明:

const (
    pi = 3.1415
    e = 2.7182
)

const 同时声明多个常量时,如果省略了值则表示和上面一行的值相同。 例如:

const (
    n1 = 100
    n2
    n3
)

上面示例中,常量 n1n2n3 的值都是 100

iota 计数器

iota 是 Go 语言的常量计数器,只能在常量的表达式中使用。

iotaconst 关键字出现时将被重置为 0const 中每新增一行常量声明将使 iota 计数一次(iota 可理解为 const 语句块中的行索引)。 使用 iota 能简化定义,在定义枚举时很有用。

下面列出一些 iota 的使用案例。

  • 正常使用。
const (
		n1 = iota // 0
		n2        // 1
		n3        // 2
		n4        // 3
)
  • 使用 _ 跳过某些值。
const (
		n1 = iota // 0
		n2        // 1
		_
		n4        // 3
)
  • iota 声明中间插队:
const (
		n1 = iota // 0
		n2 = 100  // 100
		n3 = iota // 2
		n4        // 3
)
const n5 = iota // 0
  • 定义数量级:
const (
	_  = iota
	KB = 1 << (10 * iota)
	MB = 1 << (10 * iota)
	GB = 1 << (10 * iota)
	TB = 1 << (10 * iota)
	PB = 1 << (10 * iota)
)
  • 多个 iota 定义在一行:
const (
	a, b, c = iota + 1, iota + 2, iota + 3 // 1,2,3
	d, e, f                                // 2,3,4
	g, h, i                                // 3,4,5
)

转自:https://www.liwenzhou.com/posts/Go/01_var_and_const/

0

评论区