Golang Go Go Go part2:变量及常量声明

 

三、关键字及内置预声明常量、类型、函数

1、关键字

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      

 

 

2、内置的预声明的常量、类型和函数

常量:true    false    iota    nil

类型:int       int8      int16     int32     int64

           uint     uint8    uint16   uint32   uint64    uintptr

           float32   float64    complex128      complex64

           bool     byte     rune      string    error

函数: make    len    cap    new    append    copy    close    delete   

            complex     real    imag

            panic      recover

 

 

四、变量及常量的声明

1、变量

 标识符 (包括变量、常量、函数、包名)必须以字符开头(所有Unicode UTF-8中的字符 或 下划线“_”),不能使用数字开头。

变量的三个作用域:在函数的形式参数和函数内声明的变量(常量、函数也是)是局部变量,在函数外声明的是全局变量,首字母大写的变量在包外可见,因此形成的3个作用域块由大到小是: 包>文件>函数 ,对应 包内全局变量、文件内私有全局变量、局变量。

同一作用域内不予许重复声明同名变量,局部变量可以与全局变量同名,但包名跟作用域无关,包名只是为了标识文件所属的包。

声明全局变量必须使用 var 关键字。

声明单个局部变量也可以使用 var 关键字,但不能使用 var 同时声明多个局部变量,一般使用  :=  快速声明赋值局变量, := 只能用于局部变量。

 

go 是强类型语言,声明变量时需要指明变量类型, 语法: 

1
var 变量名 类型

 

下面是变量的声明和赋值方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
var i int //声明一个 int 变量,   全局变量的声明不可以省略 var 关键字。i = 1 //赋值
 
var m int = 2 //声明变量并赋值
var n = 3     //省略 变量类型声明,编译器自动推导出变量类型
 
k:=4  //使用 := 声明并赋值一个变量,编译器自动推导出变量类型, := 不能用于单纯赋值,不能用于声明全局变量
 
 
var x,y int //声明多个int 比量var x1,x2,x3,x4 int = 1,2,3,4  //声明多个变量并赋值
 
//这样也是声明多个变量
var (
    a1 int
    a2 int
)
var (   b1 int = 1    b2 int =2     b3 := 3)
 
var v2, v3, v4 int
v2, v3, v4 = 1, 2, 3    //多重赋值
 
 
 
i := 10
j := 20
i, j = j, i    //交换变量的值

  

关于 := 对局部变量的重新声明和重新赋值:该操作符隐含了局部变量的声明,但是,都用于批量声明和赋值时,如果对同一个局部变量做了操作,要看情况

1
2
3
4
5
6
7
8
9
10
11
12
func f(){
 
  i:=1
  i:=2 //err,不能重新声明变量 i
 
  a1,a2 :=1,2
  a1,a2 := 3,4 //err,不能重新声明变量 a1,a2
 
  a1, b1,i := 3,4,5 //ok ,声明了一个新变量 b1, 同时对变量 a1 和 i 重新赋值
 
 
}

  

 

匿名变量:下划线在 go 语言中被称为匿名变量,是一个特殊的变量名,任何赋予它的值都会被丢弃,go的函数介意返回多个值,如果不需要其中某个值就可以把它赋给下划线。

 

2、常量

常量:go 语言中常量是指编译期间就已知且不可改变的值,包括指程序中硬编码的字面常量,和使用 const 声明的常量。 

硬编码的字面常量包括数值类型(包括整型、浮点型和复数类型)、布尔类型、字符串类型;

常量的声明语法和变量生命与法一样,只要把 var 换成 const 即可。

如果试图对一个常量进行重新赋值将导致编译错误。

 

常量迭代生成器 iota :如果过需要按一定规则声明一批常量,可以使用 iota 生成器,iota 生成器在遇到 const 关键字时被初始化为0,声明常量的代码每换一行增加1,如果过同一行声明多个常量,则这些常量的值相同。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
const (
    x = iota // x == 0
    y          //y =1 ,只要第一个常量使用了 iota,后面的会隐式使用
    z         //z=2
)
 
const m = iota //0
 
const (
  a1 = iota //0
  a2 = 2
  a3,a4 = iota,iota //同一行,都是1
  a5 = iota //2
)
 
 
 
const (
    _ = iota
    KB float64 = 1 << (10*iota)  //KB为1左移10位
    MB   //MB左移20位 ...
    GB
    TB
)

  

 

posted @   ecalf  阅读(389)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
历史上的今天:
2012-12-18 PHP数组:无限分级数据的层级化处理
点击右上角即可分享
微信分享提示