文章目录
- 一、 程序基本结构
- 二. 词法标记(Lexical Tokens)(编译器解析单元)
- 三、 标识符规则(变量命名规则)
- 四、注释与行分隔符
- 五、关键字与预定义标识符
- 六、 代码示例解析
以下是基于文档的Go语言基础语法总结,结合词法标记、标识符规则和代码结构:
一、 程序基本结构
Go程序由以下部分组成(按顺序):
packagemain// 必须的包声明(main包是可执行程序入口)import"fmt"// 导入外部包constPI=3.14// 常量定义varname="fly"// 全局变量typenewTypeint// 类型声明typestudentstruct{}// 结构体typereaderinterface{}// 接口funcmain(){...}// 程序入口函数(必须)二. 词法标记(Lexical Tokens)(编译器解析单元)
编译器将代码解析为最小的词法单元,例如:
funcmain(){fmt.Println("hello")}// 对应的词法标记:// func, main, (, {, fmt, ., Println, (, "hello", ), }, )常见词法类型:
- 关键字(如
func,if,for) - 标识符(变量名、函数名)
- 操作符(
+,=,:=) - 分隔符(
(,{,;) - 字面量(
"hello",123) - 特殊标记(
EOF,COMMENT,ILLEGAL)
三、 标识符规则(变量命名规则)
标识符用于命名变量、类型等,必须遵循:
- 首字符:必须是字母(含Unicode)或下划线
_ - 后续字符:可以是字母、数字或下划线
- 不能是关键字(如
for,if,var) - 区分大小写(
Name和name是不同标识符)
合法示例:
username,_temp,中文,user1,MMXXX非法示例:
1user// 数字开头for// 关键字m*m// 包含非法字符中 午// 包含空格四、注释与行分隔符
- 行注释:
// 这是行注释 - 块注释:
/* 这是块注释 */ - 行分隔符:Go自动在换行处添加
;,但同一行写多条语句时需手动添加:fmt.Println("a");fmt.Println("b")// 不推荐,go fmt会自动拆分
五、关键字与预定义标识符
Go语言有25个关键字,不能用作标识符:
breakcasechanconstcontinuedefaultdeferelsefallthroughforfuncgogotoifimportinterfacemappackagerangereturnselectstructswitchtypevar预定义标识符(建议避免使用):
true,false,nil,iotaint,int8,int16,int32,int64uint,uint8,uint16,uint32,uint64,uintptrfloat32,float64,complex128,complex64bool,byte,rune,string,errormake,len,cap,new,append,copy,close,deletecomplex,real,imag,panic,recover六、 代码示例解析
packagemain// 包声明(必需)import"fmt"// 导入fmt包constPI=3.14// 常量(不可修改)varname="fly"// 全局变量// 自定义类型typeCelsiusfloat64typePersonstruct{NamestringAgeint}// 函数定义funcmain(){// 短变量声明(自动类型推断)message:="Hello, Go!"// 条件语句(无需括号)iflen(message)>5{fmt.Println("Long message")}// 循环(只有for)fori:=0;i<3;i++{fmt.Println(i)}// 调用函数result:=add(1,2)fmt.Println(result)}// 带参数和返回值的函数funcadd(a,bint)int{returna+b}