go20/day01/syntax/README.md
yumaojun03 744ef87ba8 ```
docs(syntax): 添加Go语言基础语法文档和示例代码

新增了基础语法的详细说明文档,包括:
- Go程序的基本组成结构
- 变量与常量的定义和使用方法
- 基础类型介绍
- 词法标记(Lexical Token)说明

同时添加了对应的示例代码文件,演示变量声明、
常量定义、类型推导等基础语法的使用。
```
2025-12-28 12:00:58 +08:00

126 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 基础语法
如下是一个程序的基本组成结构:
```go
// 当前程序的包名, main包表示入口包, 是编译构建的入口
package main
// 导入其他包
import "fmt"
// 全局变量声明和赋值
var name = "fly"
// 常量定义
const PI = 3.1415
// 一般类型声明
type newType int
// 结构体声明
type student struct{}
// 接口声明
type reader interface{}
// 程序入口
func main() {
fmt.Println("hello world, this is my first golang program!")
}
```
## 变量与常量
为什么需要变量: 变量是程序运行过程中动态改变的值, 常量是程序运行过程中不变的值
```go
package main
import "fmt"
// 根据值自动推导变量类型, 必须放到函数内部 (在包的顶部, 这个是最常用)
// 在程序运行时,是在编译时完成类型推导,运行时分配内存
var (
score = 99.5
// skill = "golang"
)
// const 定义常量
// 通常常量大写
// 什么时候需要常量, 当一个值不会被修改时, 使用常量
// 变量时, 做完程序数据存在的
// 常量, 值在编译时就已经确定下来了,被编译成为程序一部分
const (
PI = 3.14
SKILL_GOlANG = "golang"
SKILL_PYTHON = "python"
)
// var var1 = "hello"
// var var2 = 100
// var var3 = true
func main() {
// 有一个插槽来存储 用户的数据,或者程序的输入, 这种 插槽叫 变量
// 变量的声明: var 变量名 变量类型
// 变量的赋值: 变量名 = 值
// 名称变量(最麻烦的写法)
var name string
name = "bob"
// 变量的声明和赋值可以合并成一句话
// var agt int
// age = 18
var age int = 18
// 自动推导变量类型, 只能放到函数内部 (在函数内部,这个是最常用的)
// := 左侧是变量名, 右侧是值
country := "china"
_ = country
fmt.Println("hello, " + name + "!")
fmt.Println("age =", age)
fmt.Println("score =", score)
fmt.Println("country =", country)
// hello, bob!
// age = 18
// score = 99.5
// country = china
}
```
## Go的基础类型(基础数据结构)
在这个结构里面必须要符合Go程序的语法, 编写出来的程序才是合法的,才能被编译器识别, 编译器识别代码的基础单位是Lexical Token(词法标记),比如 如下一段代码:
```go
func main() {
fmt.Println("hello world, this is my first golang program!")
}
```
他包含的Lexical Token(词法标记)有如下12个:
```
func // 关键字 func
main // 标识符 函数名称
( // LPAREN 左小括号
{ // LBRACE 左花括号
fmt // 标识符 包名称
. // PERIOD 调用符
Println // 标识符 函数名称
( // LPAREN 左小括号
"hello world, this is my first golang program!" // 标识符 字符串常量
) // RPAREN 右小括号
} // RBRACE 右花括号
// (此处无多余 token上一行已闭合
```