当前位置: 首页 > article >正文

【Go语言基础】基本语法

文章目录

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

以下是基于文档的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)(编译器解析单元)

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

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 是不同标识符)

合法示例

username, _temp, 中文, user1, MMXXX

非法示例

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

 

四、注释与行分隔符

  • 行注释// 这是行注释
  • 块注释/* 这是块注释 */
  • 行分隔符:Go自动在换行处添加 ;,但同一行写多条语句时需手动添加:
    fmt.Println("a"); fmt.Println("b")  // 不推荐,go fmt会自动拆分
    

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

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

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

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

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

 

六、 代码示例解析

package main    // 包声明(必需)
import "fmt"    // 导入fmt包const PI = 3.14  // 常量(不可修改)
var name = "fly" // 全局变量// 自定义类型
type Celsius float64
type Person struct {Name stringAge  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
}
http://www.lryc.cn/news/2401941.html

相关文章:

  • 工作流引擎-18-开源审批流项目之 plumdo-work 工作流,表单,报表结合的多模块系统
  • 【虚拟机版本号】如果忘记了版本号,这样查找版本号
  • std::conditional_t一个用法
  • Java高效批量读取Redis数据:原理、方案与实战案例
  • 基于RK3568的多网多串电力能源1U机箱解决方案,支持B码,4G等
  • 面试题:Java多线程并发
  • 2006-2020年各省用水总量数据
  • 舵机在弹簧刀无人机中的作用是什么?
  • c++ openssl 使用 DES(数据加密标准)进行加密和解密的基本操作
  • Git忽略规则.gitignore不生效解决
  • Excel高级函数使用FILTER、UNIQUE、INDEX
  • 6月5日day45
  • Linux 系统 rsyslog 配置
  • 基于rpc框架Dubbo实现的微服务转发实战
  • matlab基于GUI实现水果识别
  • 视频爬虫的Python库
  • 深度学习N2周:构建词典
  • Qt多线程访问同一个数据库源码分享(基于Sqlite实现)
  • 多类别分类中的宏平均和加权平均
  • 电子电路:什么是扩散电容?
  • 贪心算法应用:装箱问题(FFD问题)详解
  • 机器学习的数学基础:假设检验
  • 余氯传感器在智慧水务系统中如何实现IoT集成
  • 操作系统学习(九)——存储系统
  • 服务器安装软件失败或缺依赖怎么办?
  • linux nm/objdump/readelf/addr2line命令详解
  • 006网上订餐系统技术解析:打造高效便捷的餐饮服务平台
  • [10-2]MPU6050简介 江协科技学习笔记(22个知识点)
  • 基于行为分析的下一代安全防御指南
  • Redis持久化机制详解:RDB与AOF的深度剖析