go语言变量和常量

变量定义

变量就是声明在内存中的一些数据,用于后续逻辑的操作和控制

变量的声明

package main

import (
	"fmt"
	"math"
)

// 全局变量声明和赋值
var (
	name string = "hahah"
	num  int64  = 64
	done bool   = true
)

func main() {
	// 使用num全局变量
	fmt.Println(num)
	// 局部变量声明和赋值(显示定义变量类型)
	var num0 int32 = 92
	fmt.Println(num0)
	// 局部变量声明和赋值(自动推导变量类型)
	var num1 = 61
	fmt.Println(num1)
	// 局部变量声明和赋值(短声明)
	num2, num3 := 61.0, 62.0
	fmt.Println(math.Max(num2, num3))
}

1.全局变量

全局变量声明与函数处于同一层级,一般定义在import导包之后,全局声明变量作用域在同一个包内有效

2.局部变量

局部变量定义一般分为显示类型声明、自动推导和 := 三种,局部变量只能够在同一 {} 作用域内生效,之外就会失效。

3.匿名变量

_ 是匿名变量,也叫哑元变量,不占用命名空间,不分配内存,常用于函数多个返回值时,只需要获取部分返回值的情况使用。

package main

import (
	"fmt"
)

func getTwoNums() (int, int) {
	return 1, 2
}

func main() {
	// 使用匿名变量,从而不分配不需要的变量内存
	num1, _ := getTwoNums()
	fmt.Println(num1)
}

4.补充

  • 全局变量声明之后可以不使用;局部变量声明之后必须要使用,否则会报错。
  • := 只能在函数内声明使用(只能定义局部变量);var 不仅可以声明局部变量,也可以声明全局变量。
  • 如果全局变量和局部变量定义了同名变量,那么使用该变量时候,会优先使用局部的变量。
package main

import "fmt"

/* 声明全局变量 */
var g int = 20

func main() {
   /* 声明局部变量 */
   var g int = 10

   fmt.Printf ("结果: g = %d\n",  g)
}
[Running] go run "/Users/lijinlong/local/go/GoProjects/src/leetcode/main.go"
结果: g = 10

常量定义

常量就是不能改变的量,常用于保证数据安全性,防止运行过程中程序员失误操作改变了该变量,如果尝试去改变常量,那么会编译报错,它必须定义且同时赋值。

package main

import "fmt"

const (
	ERRO = 500
	// OK不赋值,那么和ERRO值一样
	OK
)

func main() {
	fmt.Printf("ERRO = %d OK = %d\n", ERRO, OK)
}

iota

iota是常量计数器,在const关键字出现是时候,iota会被置零。iota每新增一行常量赋值,iota的值会自增1。常用于统计声明了多少 常量。

package main

import "fmt"

const (
	num1 = iota
	num2
	num3
)

func main() {
	fmt.Printf("num1 = %d num2 = %d num3 = %d", num1, num2, num3)
}

[Running] go run "/Users/lijinlong/local/go/GoProjects/src/leetcode/main.go"
num1 = 0 num2 = 1 num3 = 2

声明数量级别

package main

import "fmt"

// 定义数量级
const (
	_  = iota
	KB = 1 << (10 * iota)
	MB = 1 << (10 * iota)
	GB = 1 << (10 * iota)
	TB = 1 << (10 * iota)
)

func main() {
	fmt.Printf("KB = %d, MB = %d, GB = %d, TB = %d", KB, MB, GB, TB)
}

[Running] go run "/Users/lijinlong/local/go/GoProjects/src/leetcode/main.go"
KB = 1024, MB = 1048576, GB = 1073741824, TB = 1099511627776
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值