golang 变量常量

本文详细介绍了Go语言中的变量声明、初始化、作用域以及零值。讲解了如何使用`var`关键字声明变量,以及变量的默认值。同时,文章探讨了常量的声明与使用,强调常量在程序运行期间不可更改的特性。还提到了使用`iota`作为计数器在常量声明中的应用。此外,文章还涵盖了局部变量、全局变量和形式参数的概念。
摘要由CSDN通过智能技术生成

变量

  1. 语言变量名满足(标识符规则)由字母、数字、下划线组成,其中首个字符不能为数字

  2. 使用 var 关键字声明,同作用域内不能重复声明

  3. 变量初始化零值表

    类型类型零值
    bool布尔类型false
    int整数0
    float浮点0.0
    string字符串“”
    pointer, function, interface, slice, channel, map引用类型nil
    array, struct聚合类型嵌套零值
    time.Time时间0001-01-01 00:00:00 +0000 UTC

    https://golang.google.cn/ref/spec#The_zero_value

作用域

  • 函数内定义的变量称为局部变量
  • 函数外定义的变量称为全局变量
  • 函数定义中的变量称为形式参数
//全局变量
//函数外,小写本包,大写跨包,不能使用省略var的形式
//Global := 1  出错:Global unexpected
var Global = 1

//局部变量 如果和全局变量同名,优先使用全局变量
//函数内、for/if中
func test() (int,int) {
  a:=0
  b:=0
	return a+b,a-b
}

//形式参数
//fmt.Println(a,b) a,b在sumDiffer函数内,是局部变量,不能访问
fmt.Println("author time:",author,time)

声明

// var 变量名1[,变量名2...] 类型
var num int
var num1,num2 int

//批量 常用于全局变量声明
/*
var (
  变量1 = value1
  变量2 = value2
)
*/

var (
	author = "lady_killer9"
	time = "now"
)

初始化

// var 变量名1[,变量名2...] [类型] = value1[,value2...]
var num3 int8 = 1
var num4,num5 int = 1,2

类型推导

// var 变量名1[,变量名2...] = value1[,value2...]
var num3  = 1 // 推导 num3 int
var string1 = "aaa" //推导 string1 string

声明初始化

// 变量名1[,变量名2...] := value1[,value2...]
// := 必须在函数体内部
f1 := 5.0

匿名变量(不占空间,不分配内存)

// _ 表示匿名变量 编译器忽略 
_,a := 1,2

赋值

num1 = 1             // 赋值
num2 = 2 
num1,num2 = num2,num1 // 交换
_,num2 = 1,2          // 丢弃

常量

  1. 使用关键字const,声明时必须赋值

  2. 常量是一个简单值的标识符,在程序运行时,不会被修改的量。

  3. 常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。

// const 变量名 [type] = value
const Pi = 3.1415926

// 多个常量
/*
const (
  变量名1 [type] = value
  变量名2 [[type] = value]
  ....
)
*/
const (
        pi = 3.1415
        e = 2.7182
    )

缺省

//声明多个变量时 省略表示和上面值一样
const(
   a = 1
   b     //b = 1
   c     //c = 1
)

iota计数器

  1. iota 在 const关键字出现时将被重置为 0(const 内部的第一行之前),

  2. const 中每新增一行常量声明将使 iota 计数一次(iota 可理解为 const 语句块中的行索引)

const (  
  Sun = iota  //0
  Mon    //1     
  Tue    //2       
  Wed    //3     
  Thur    //4  
  Fri     //5    
  Sat     //6  
)
const (   
  a = iota  //0   
  b          //1   
  c          //2   
  d = "ha"   //独立值 "ha",iota += 1 = 3   
  e          //"ha"   iota += 1 = 4   
  f = 100    //独立值  100 iota +=1 = 5   
  g          //100    iota +=1 = 6   
  h = iota   //7,恢复计数    
  i          //8
)
//<<n==*(2^n) 
const (    
  i=1<<iota //1*1    
  j=3<<iota //3*2    
  k         //3*4    
  l         //3*8
)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mars'Ares

请我喝杯咖啡吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值