【Go语言基础】基本语法

文章目录

    • [一、 程序基本结构](#一、 程序基本结构)
    • [二. 词法标记(Lexical Tokens)(编译器解析单元)](#二. 词法标记(Lexical Tokens)(编译器解析单元))
    • [三、 标识符规则(变量命名规则)](#三、 标识符规则(变量命名规则))
    • 四、注释与行分隔符
    • 五、关键字与预定义标识符
    • [六、 代码示例解析](#六、 代码示例解析)

以下是基于文档的Go语言基础语法总结,结合词法标记、标识符规则和代码结构:

一、 程序基本结构

Go程序由以下部分组成(按顺序):

go 复制代码
package main        // 必须的包声明(main包是可执行程序入口)
import "fmt"        // 导入外部包
const PI = 3.14     // 常量定义
var name = "fly"    // 全局变量
type newType int    // 类型声明
type student struct{} // 结构体
type reader interface{} // 接口
func main() { ... }  // 程序入口函数(必须)

二. 词法标记(Lexical Tokens)(编译器解析单元)

编译器将代码解析为最小的词法单元,例如:

go 复制代码
func main() {
    fmt.Println("hello")
}
// 对应的词法标记:
// func, main, (, {, fmt, ., Println, (, "hello", ), }, )

常见词法类型

  • 关键字 (如 func, if, for
  • 标识符(变量名、函数名)
  • 操作符+, =, :=
  • 分隔符(, {, ;
  • 字面量"hello", 123
  • 特殊标记EOF, COMMENT, ILLEGAL

三、 标识符规则(变量命名规则)

标识符用于命名变量、类型等,必须遵循:

  1. 首字符 :必须是字母(含Unicode)或下划线 _
  2. 后续字符:可以是字母、数字或下划线
  3. 不能是关键字 (如 for, if, var
  4. 区分大小写Namename 是不同标识符)

合法示例

go 复制代码
username, _temp, 中文, user1, MMXXX

非法示例

go 复制代码
1user      // 数字开头
for        // 关键字
m*m        // 包含非法字符
中 午       // 包含空格

四、注释与行分隔符

  • 行注释// 这是行注释

  • 块注释/* 这是块注释 */

  • 行分隔符 :Go自动在换行处添加 ;,但同一行写多条语句时需手动添加:

    go 复制代码
    fmt.Println("a"); fmt.Println("b")  // 不推荐,go fmt会自动拆分

五、关键字与预定义标识符

Go语言有25个关键字,不能用作标识符:

go 复制代码
break    case     chan     const    continue
default  defer    else     fallthrough  for
func     go       goto     if       import
interface  map    package  range    return
select   struct   switch   type     var

预定义标识符(建议避免使用):

go 复制代码
true, false, nil, iota
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

六、 代码示例解析

go 复制代码
package main    // 包声明(必需)
import "fmt"    // 导入fmt包

const PI = 3.14  // 常量(不可修改)
var name = "fly" // 全局变量

// 自定义类型
type Celsius float64
type Person struct {
    Name string
    Age  int
}

// 函数定义
func main() {
    // 短变量声明(自动类型推断)
    message := "Hello, Go!"
    
    // 条件语句(无需括号)
    if len(message) > 5 {
        fmt.Println("Long message")
    }
    
    // 循环(只有for)
    for i := 0; i < 3; i++ {
        fmt.Println(i)
    }
    
    // 调用函数
    result := add(1, 2)
    fmt.Println(result)
}

// 带参数和返回值的函数
func add(a, b int) int {
    return a + b
}
相关推荐
头发还在的女程序员1 小时前
医院陪诊管理系统怎么选择?——2026 年选型避坑与架构参考
java·开发语言·陪诊系统·陪诊app·医院陪诊陪护
爱写代码的小朋友3 小时前
从零开始学 Win32 API:C++ 窗口编程实战(VS Code + MinGW-w64 命令行详解)
开发语言·c++
果汁华3 小时前
Function Calling 与 Python 实战完整指南
开发语言·网络·python
小小晓.4 小时前
C++:语句和作用域
开发语言·c++
wanderist.4 小时前
Lambda表达式在算法竞赛中的应用
java·开发语言·算法
海天鹰5 小时前
PHP上传文件
android·开发语言·php
ttwuai6 小时前
AI 生成后台改数据后,操作日志别只记按钮:Go + MySQL 怎么验
数据库·人工智能·mysql·golang
Yeauty7 小时前
渲染成图再 CLI 拼接,还是进程内直推?Rust 帧到视频的两条路
开发语言·rust·音视频
geovindu7 小时前
CSharp: Breadth First Search Algorithm and Depth First Search Algorithm
开发语言·后端·算法·c#·.net·搜索算法
极客猴子7 小时前
会议记录APP怎么选 2026年实测功能对比与使用指南
人工智能·xcode