浅析Golang中变量与常量的声明与使用

 更新时间:2023年04月04日 10:45:10   作者:water  
变量、常量的声明与使用是掌握一门编程语言的基础,这篇文章主要为大家详细介绍了Golang中变量与常量的声明与使用,需要的可以参考一下

变量

变量的类型

变量的作用是用来存储数据,不同的变量保存的数据类型有可能是不一样的,一般常见的数据类型有:整型、浮点型、布尔型等。

go作为一个强类型语言,go中的每一个变量都有自己的类型,并且变量必须经过声明才能开始使用。

声明变量

go中的变量需要声明后才能使用,并且在同一个作用域中不支持重复声明。并且go语言的变量声明后必须使用。

变量声明的方式

标准声明

一般声明变量的格式为

// var 变量名 变量类型

var name string
var age int
var isShow bool

批量声明

当在声明变量的时候每次都需要写var关键字会显得比较繁琐,在go中还支持批量的声明变量

var (
    name string
    age int
    isShow bool
    num float32
)

变量的初始化

go中在声明变量的时候,会自动对变量对应的内存区域进行初始化操作,每个变量都会被初始化成其类型的默认值,比如:整型和浮点型变量的默认值为0.字符串变量的默认值为空字符串。布尔值变量的默认值为false。切片、函数、指针变量的默认为nil

但是在声明变量的时候为其指定初始值。变量初始化的标准格式为

// var 变量名 类型 = 值
var name string = "water"
var age int = 18
// 也可以一次定义多个变量
var name,age = "water", 20

变量类型推导

很多时候可以将变量的类型省略,编辑器可以根据等号右边的值来推导出变量的类型

var name = "water"
var age = 18

短变量声明

在函数内部,可以使用:=的声明方式初始化变量

package main

import (
    "fmt"
)

// 全局变量
var name = "water"

func main() {
    a := 1
    b := 2
    fmt.Println(a,b)
}

匿名变量

在使用多重赋值时,如果想忽略一个值,可以使用匿名变量,匿名变量一般用一个下划线_表示,如下

func getValue()(int,string){
    return 18,"water"
}

func main() {
    a,_ := getValue()
    _,b := getValue()
    fmt.Println("a=",a)
    fmt.Println("b=",b)
}

匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明,变量声明需要注意以下问题:

  • 函数外的每个语句都必须以关键字开始比如:var、const、func
  • :=不能在函数外使用
  • _多用于占位,表示忽略值

常量

相比较于变量而言,常量是恒定不变的值,定义一些不会改变的值。常量的声明和变量声明非常相似,只是把var换成了const,常量在定义的时候必须赋值

const a = 123
const b = 456

常量一旦声明就不会再发生变化了。而且多个常量也可以一起声明

const (
    a = 123
    b = 456
)

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

const (
    a = 1
    b
    c
)

这样a、b、c的值都是100

iota

iota是go语言的常量计数器,只能在常量的表达式中使用。iota在const关键字中第一次出现时为0,然后const中每新增一行常量声明就将加一计数一次。

const (
    a = iota // 0
    b // 1
    c // 2
    d // 3
)

常见的使用iota的技巧

使用_跳过一些值

const (
    a = iota //0
    b // 1
    _
    d // 3
)

在iota中间插入其他值

const (
    a = iota // 0
    b = 20
    c // 2
    d // 3
)

const e = iota // 0

多个iota定义一行

const (
    a,b = iota + 1,iota + 2 // 1,2
    c,d // 2,3
    e,f // 3,4
)

到此这篇关于浅析Golang中变量与常量的声明与使用的文章就介绍到这了,更多相关Golang变量 常量内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • GO语言中err接口及defer延迟异常处理分析

    GO语言中err接口及defer延迟异常处理分析

    这篇文章主要为大家介绍了GO语言中err接口及defer延迟异常处理的示例分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-04-04
  • 解决GOPATH在GOLAND中的坑

    解决GOPATH在GOLAND中的坑

    这篇文章主要介绍了解决GOPATH在GOLAND中的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • 基于golang channel实现的轻量级异步任务分发器示例代码

    基于golang channel实现的轻量级异步任务分发器示例代码

    这篇文章主要给大家介绍了关于基于golang channel实现的轻量级异步任务分发器的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07
  • Go语言使用Request,Response处理web页面请求

    Go语言使用Request,Response处理web页面请求

    这篇文章主要介绍了Go语言使用Request,Response处理web页面请求,需要的朋友可以参考下
    2022-04-04
  • IdeaGo启动报错Failed to create JVM的问题解析

    IdeaGo启动报错Failed to create JVM的问题解析

    这篇文章主要介绍了IdeaGo启动报错Failed to create JVM的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • Go语言到底有没有引用传参(对比 C++ )

    Go语言到底有没有引用传参(对比 C++ )

    这篇文章主要介绍了Go 到底有没有引用传参(对比 C++ ),需要的朋友可以参考下
    2017-09-09
  • Go语言字符串高效拼接的实现

    Go语言字符串高效拼接的实现

    这篇文章主要介绍了Go语言字符串高效拼接的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-02-02
  • 详解如何使用Golang实现Cron定时任务

    详解如何使用Golang实现Cron定时任务

    定时任务是许多应用程序中常见的一种需求,它们可以用于执行定期的清理任务,发送通知,生成报告等,在这篇博客中,我们将介绍如何在Go语言中使用robfig/cron包来实现Cron定时任务,需要的朋友可以参考下
    2024-04-04
  • Gotify搭建你的消息推送系统

    Gotify搭建你的消息推送系统

    这篇文章主要介绍了Gotify搭建你的消息推送系统,今天要分享的是 gotify,是一个用 go 编写的消息服务端,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2024-01-01
  • 一文教你如何快速学会Go的切片和数组数据类型

    一文教你如何快速学会Go的切片和数组数据类型

    数组是属于同一类型的元素的集合。切片是数组顶部的方便、灵活且功能强大的包装器。本文就来和大家聊聊Go中切片和数组的使用,需要的可以参考一下
    2023-03-03

最新评论