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

Go语言25个关键字全解析

go语言中的特殊关键字

Go语言中共有25个关键字,这些关键字具有特定的语法功能,不可用作标识符。以下是详细分类及用法:


声明类关键字

var
用于声明变量,可指定类型或通过初始值推断类型:

var x int = 10
var y = "hello"

const
声明常量,值不可修改:

const Pi = 3.14

type
定义新类型或类型别名:

type Celsius float64
type IntSlice []int

func
声明函数或方法:

func add(a, b int) int {return a + b
}


流程控制类关键字

if/else
条件分支控制:

if x > 0 {println("positive")
} else {println("non-positive")
}

switch/case/default
多条件分支:

switch os := runtime.GOOS; os {
case "linux":println("Linux")
default:println(os)
}

for
循环控制(支持三种形式):

for i := 0; i < 10; i++ { /* 传统for循环 */ }
for x < 100 { /* while循环 */ }
for { /* 无限循环 */ }

range
迭代数组、切片、map等:

for idx, val := range []int{1,2,3} {println(idx, val)
}

break
退出当前循环:

for {if condition {break}
}

continue
跳过当前循环迭代:

for i := 0; i < 5; i++ {if i%2 == 0 {continue}println(i) // 只输出奇数
}

goto
跳转到指定标签(慎用):

    if err != nil {goto exit}
exit:println("cleanup")


并发编程关键字

go
启动goroutine(轻量级线程):

go func() {println("new goroutine")
}()

chan
声明通道类型:

ch := make(chan int)

select
多通道操作选择:

select {
case msg := <-ch1:println(msg)
case ch2 <- 1:println("sent")
default:println("no activity")
}


错误处理关键字

defer
延迟执行语句(常用于资源释放):

f, _ := os.Open("file.txt")
defer f.Close() // 函数返回前执行

panic/recover
异常处理机制:

func safeCall() {defer func() {if r := recover(); r != nil {println("recovered:", r)}}()panic("unexpected error")
}


包管理关键字

import
导入包:

import ("fmt""math/rand"
)

package
声明包名(文件首行):

package main


结构体相关关键字

struct
定义结构体类型:

type Point struct {X, Y int
}

interface
定义接口类型:

type Writer interface {Write([]byte) (int, error)
}

map
声明映射类型:

m := make(map[string]int)
m["key"] = 1


其他关键字

return
函数返回值:

func sum(a, b int) int {return a + b
}

fallthrough
在switch中强制执行下一个case:

switch x {
case 1:println("1")fallthrough
case 2:println("2") // 即使x=1也会执行
}


注意事项

  1. 所有关键字均为小写,如func而非Func
  2. 未使用的导入变量会导致编译错误,需用空白标识符_忽略:
_ = unusedVar

  1. 关键字不能用于自定义变量名、函数名等标识符。
http://www.dtcms.com/a/390863.html

相关文章:

  • 图像滤波常用总结
  • Go语言设计原则与设计模式
  • (LoRA深度解析)LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS论文精读(逐段解析)
  • 第十四届蓝桥杯青少组C++选拔赛[2022.11.27]第二部分编程题(4、找路线)
  • 知识图谱对自然语言处理深层语义分析的影响与启示:结构化研究报告
  • 架构师成长之路-缓存二
  • 正点原子小智BOX0/BOX2 产品使用视频表情功能
  • 鸿蒙NEXT分布式文件系统:开启跨设备文件访问新时代
  • 【主机初始化工作】
  • Ubuntu20.04仿真 | iris四旋翼添加livox mid360激光雷达
  • Linux进程终止
  • Go如何重塑现代软件开发的技术基因
  • 设计模式(C++)详解—外观模式(2)
  • 【ubuntu24.04】apt update失败 过期的签名清理
  • Go 语言常用算法库教学与实践指南
  • 基于FPGA的智能垃圾分类装置
  • 168. Excel 表列名称【简单】
  • Ubuntu20.04 6步安装ROS-Noetic
  • 基于 MATLAB 的双边滤波去图像云雾处理
  • 将一台已连接无线网络的 Windows 电脑通过网络线共享网络给另一台电脑
  • 复习1——TCP/IP之常用协议
  • 讲清楚 PagedAttention
  • 多对多依赖;有向无环图l;拓扑排序;DFS回溯输出全路径简述
  • 【序列晋升】37 Spring Data LDAP 跳出传统数据访问框架,掌握目录服务开发新范式
  • Redis三种服务架构
  • GPT-5 高并发文生图视频 API 架构实战指南
  • LLM赋能网络安全:六大应用场景的深度解析与前沿突破
  • 分布式链路追踪-SkyWalking
  • 第五篇:范围-Based for循环:更简洁、更安全地遍历容器
  • 京准科技NTP网络校时服务器实现分布式系统精准协同