第三章:基本语法 2.变量和常量 --Go 语言轻松入门

在Go语言中,变量和常量是用于存储数据的基本元素。它们允许你在程序的不同部分之间传递信息,并且可以用来保存计算的结果等。下面分别介绍变量和常量的定义方式及其特点。

变量

声明变量

  • 使用var关键字:这是最常见的声明变量的方式。

    go 复制代码
    var age int
    var name string
    
    age = 25
    name = "Alice"
  • 类型推断:如果初始化时指定了值,可以省略类型说明,编译器会根据值自动推断类型。

    go 复制代码
    var age = 25
    var name = "Alice"
  • 简短声明操作符:= :在函数内部,可以使用:=来同时声明并初始化变量。这通常用于局部变量。

    go 复制代码
    age := 25
    name := "Alice"
go 复制代码
-- 以上3种变量的定义赋值效果都一样,我比较喜欢的是简短声明。

初始化

变量可以在声明时直接赋初值,也可以稍后赋值。如果未显式初始化,变量将被赋予其类型的零值(例如,整型为0,字符串为空字符串"")。

修改

变量的值是可以修改的。一旦声明了变量,你可以在程序中的任何地方改变它的值。

go 复制代码
age := 25
age = 30 // 修改变量的值

常量

声明常量

  • 使用const关键字:常量在声明时必须指定一个初始值,且这个值不能被修改。

    go 复制代码
    const Pi = 3.14159
    const MaxUsers = 100
  • iotaiota是一个特殊的预定义标识符,用于生成一系列递增的整数常量。

    go 复制代码
    const (
        a = iota  // a == 0
        b         // b == 1
        c         // c == 2
    )

    iota还可以与位运算符结合使用,以创建一组相关的常量。

    go 复制代码
    const (
        Read = 1 << iota  // 0001
        Write            // 0010
        Execute          // 0100
    )

特点

  • 常量的值在编译时确定,并且在整个程序执行期间保持不变。
  • 常量可以是数字、字符串或布尔值。
  • 常量可以在包级别或函数内声明。

示例

go 复制代码
package main

import "fmt"

func main() {
    // 变量
    var age int = 25
    name := "Alice"  // 使用简短声明

    fmt.Println("Name:", name, "Age:", age)

    // 修改变量
    age = 30
    fmt.Println("Updated Age:", age)

    // 常量
    const Pi = 3.14159
    fmt.Println("Pi:", Pi)

    // 使用 iota 的常量
    const (
        Read = 1 << iota  // 0001
        Write            // 0010
        Execute          // 0100
    )

    fmt.Printf("Read: %b, Write: %b, Execute: %b\n", Read, Write, Execute)
}

在这个示例中,我们展示了如何声明变量和常量,以及如何使用iota来创建一组相关的常量。通过这些基础概念,你可以开始构建更复杂的Go程序。

相关推荐
H5css�海秀7 小时前
今天是自学大模型的第一天(sanjose)
后端·python·node.js·php
SuniaWang7 小时前
《Spring AI + 大模型全栈实战》学习手册系列 · 专题六:《Vue3 前端开发实战:打造企业级 RAG 问答界面》
java·前端·人工智能·spring boot·后端·spring·架构
韩立学长8 小时前
Springboot校园跑腿业务系统0b7amk02(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
sheji34168 小时前
【开题答辩全过程】以 基于springboot的扶贫系统为例,包含答辩的问题和答案
java·spring boot·后端
代码栈上的思考9 小时前
消息队列:内存与磁盘数据中心设计与实现
后端·spring
程序员小假9 小时前
我们来说一下 b+ 树与 b 树的区别
java·后端
Meepo_haha10 小时前
Spring Boot 条件注解:@ConditionalOnProperty 完全解析
java·spring boot·后端
sheji341610 小时前
【开题答辩全过程】以 基于springboot的房屋租赁系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
Victor35611 小时前
MongoDB(57)如何优化MongoDB的查询性能?
后端
Victor35611 小时前
MongoDB(58)如何使用索引优化查询?
后端