Go语言学习笔记(二)——变量、数据类型与流程控制详解

在掌握了 Go 的基本环境和程序结构后,接下来就要进入最核心的基础语法部分:变量、常量、数据类型、运算符以及流程控制。这一部分是后续学习函数、结构体、接口和并发的基础。

一、变量的定义与使用

在 Go 中,变量用于存储数据。变量定义有几种常见方式。

1. 标准声明方式

var name string = "Tom"
var age int = 20

这种写法最完整,明确指定了变量名、类型和值。

2. 类型推导

var name = "Tom"
var age = 20

Go 会根据右侧的值自动推导类型。

3. 短变量声明

name := "Tom"
age := 20

这是 Go 中最常用的变量定义方式,但只能在函数内部使用,不能用于全局变量。

4. 多变量声明

var a, b, c int = 1, 2, 3
x, y := 10, 20

多变量声明在接收函数返回值时非常常见。

二、常量的定义

常量是值不可修改的数据,使用 const 定义。

const PI = 3.14159
const appName string = "GoDemo"

Go 中的常量还可以配合 iota 使用,快速定义枚举值。

const (
    Monday = iota
    Tuesday
    Wednesday
    Thursday
    Friday
)

这里 Monday 的值是 0,后面依次递增。

三、Go 的基本数据类型

Go 是静态类型语言,每个变量都有明确类型。

1. 整型

常见整型有:

  • int
  • int8
  • int16
  • int32
  • int64
  • uint
  • uint8
  • uint16
  • uint32
  • uint64

示例:

var a int = 10
var b int64 = 100000

2. 浮点型

Go 提供两种浮点类型:

  • float32
  • float64
var price float64 = 99.99

通常更常用 float64,因为精度更高。

3. 布尔型

只有两个值:

var isOk bool = true
var isFail bool = false

4. 字符串

字符串在 Go 中是不可变的字节序列。

var str string = "Hello Go"

字符串常用操作:

fmt.Println(len(str))
fmt.Println(str[0])

需要注意,Go 字符串如果包含中文,一个汉字通常占多个字节,处理时要特别小心。

四、数据类型转换

Go 不允许隐式类型转换,必须显式转换。

var a int = 10
var b float64 = float64(a)
fmt.Println(b)

这种严格的类型系统可以减少很多隐性 bug。

五、运算符

Go 中常见运算符有以下几类:

1. 算术运算符

+  -  *  /  %

示例:

a := 10
b := 3
fmt.Println(a + b)
fmt.Println(a - b)
fmt.Println(a * b)
fmt.Println(a / b)
fmt.Println(a % b)

2. 比较运算符

==  !=  >  <  >=  <=

3. 逻辑运算符

&&  ||  !

4. 赋值运算符

=   +=   -=   *=   /=   %=

六、流程控制语句

流程控制决定程序如何执行,Go 中主要有 ifforswitch

1. if 语句

age := 18

if age >= 18 {
    fmt.Println("已成年")
} else {
    fmt.Println("未成年")
}

Go 的 if 不需要加括号,但条件后必须跟大括号。

if 的特殊写法

if score := 85; score >= 60 {
    fmt.Println("及格")
}

这种写法可以在条件判断前定义一个临时变量。

2. for 循环

Go 中没有 whiledo while,循环统一使用 for

普通 for

for i := 0; i < 5; i++ {
    fmt.Println(i)
}

类似 while

i := 0
for i < 5 {
    fmt.Println(i)
    i++
}

无限循环

for {
    fmt.Println("循环中")
}

3. switch 语句

day := 3

switch day {
case 1:
    fmt.Println("星期一")
case 2:
    fmt.Println("星期二")
case 3:
    fmt.Println("星期三")
default:
    fmt.Println("未知")
}

Go 的 switch 默认自带 break,不需要手动写。

七、输入输出基础

Go 使用 fmt 包进行输入输出。

1. 输出

name := "Alice"
age := 22

fmt.Println(name, age)
fmt.Printf("姓名:%s,年龄:%d\n", name, age)

2. 输入

var name string
fmt.Print("请输入姓名:")
fmt.Scan(&name)
fmt.Println("你输入的是:", name)

输入时需要传入变量地址,所以要使用 &

八、示例:简单成绩判断程序

package main

import "fmt"

func main() {
    var score int
    fmt.Print("请输入成绩:")
    fmt.Scan(&score)

    if score >= 90 {
        fmt.Println("优秀")
    } else if score >= 80 {
        fmt.Println("良好")
    } else if score >= 60 {
        fmt.Println("及格")
    } else {
        fmt.Println("不及格")
    }
}

这个小程序综合使用了变量、输入输出和 if-else 语句,是非常典型的练习案例。

九、总结

Go 的基础语法设计得非常克制,很多地方看起来都很“朴素”,但正是这种朴素让代码更容易理解和维护。变量定义简单直接,类型系统严格,流程控制也没有太多花哨语法,非常适合用来构建高质量工程代码。

打基础阶段,一定要多写小程序练习,比如计算器、成绩判断、猜数字游戏等,这样能更快熟悉 Go 的语言风格。

posted @ 2026-03-13 21:44  空之匣  阅读(2)  评论(0)    收藏  举报