Go语言基础语法介绍

发布时间:2026/10/28 19:01:47
Go语言基础语法介绍 Go编程语言语法GoGolang简介基本背景Go又称 Golang是由 Google 公司开发的一门静态类型、编译型编程语言。它于2007 年开始研发由三位著名计算机科学家Robert Griesemer、Rob Pike罗布·派克和 Ken Thompson肯·汤普森主导设计2009 年 11 月公开发布2010 年正式开源。值得注意的是开发团队隶属于 Google而并非某个独立的研究实验室——他们的初衷是解决 Google 内部大规模软件工程的实际问题。主要开发目的Go 诞生是为了应对 Google 在构建超大规模系统时的痛点解决 C 的复杂性——Google 大量使用 C但编译慢、依赖管理混乱、语言特性庞杂导致开发效率低下。提升大型项目的开发效率——让成千上万的工程师能快速读懂、修改同一份巨型代码库。原生支持并发编程——充分利用多核处理器简化高性能网络服务的开发。对比其他语言的优点对比对象Go 的优势对比 C/C语法简洁、自带垃圾回收GC、编译速度极快通常秒级、没有头文件和宏对比 Java部署简单直接编译成单个可执行文件无需 JVM、内存占用低、启动快对比 Python静态类型检查、执行速度快得多、并发能力强对比 Node.js并发模型更清晰goroutine channel而非回调或事件循环、能榨干多核性能核心亮点包括goroutine 轻量级协程可轻松开起数万并发任务、channel 通信机制“不要通过共享内存来通信”、标准库强大网络、HTTP、加密一应俱全、工具链完善gofmt 统一格式、go test 内置测试。适合的场景云原生与后端服务Docker、Kubernetes、Prometheus、etcd 等著名项目均用 Go 编写微服务与 API 网关高并发网络服务是 Go 的主战场DevOps 工具CLI 命令行工具、CI/CD 工具如 Terraform、Hugo网络编程与代理服务器如 Caddy、gRPC 服务端不适合的场景GUI 桌面应用、对极致性能要求且无 GC 容忍度的系统如游戏引擎底层、复杂业务逻辑的快速原型Python/Ruby 更快一句话总结Go 是一门为大型软件工程而生的语言用简洁的语法换取了高效的开发体验和高并发性能如今已成为云计算时代后端开发的主流选择之一。下面介绍这个语言的基础语法知识。1. 变量与赋值Variables1.1 变量声明Go 有三种常见方式varaint10varb20// 自动推断类型c:30// 短声明最常用注意・:只能在函数内部使用・ Go 是强类型语言1.2 多变量赋值x,y:1,2x,yy,x// 交换变量Go特色2. 算数运算Arithmeticab a-b a*b a/b a%b示例x:10y:3fmt.Println(x/y)// 3整数除法3. 逻辑运算Boolean// 与||// 或!// 非示例ifa10b20{fmt.Println(ok)}4. 基本数据结构4.1 数字NumbersGo 没有隐式类型转换常见类型intint8/int16/int32/int64uintfloat32/float644.2 数组Array固定长度vararr[3]intarr[0]14.3 切片Slice——重点类似“动态数组”s:[]int{1,2,3}sappend(s,4)切片 vs 数组类型是否固定array是slice否动态4.4 Map字典 / 哈希表m:make(map[string]int)m[apple]10m[banana]20访问fmt.Println(m[apple])4.5 Set集合Go 没有内置 Set但通常用 map 实现set:make(map[string]bool)set[a]trueset[b]trueifset[a]{fmt.Println(exist)}5. 条件语句ififx10{fmt.Println(big)}elseifx5{fmt.Println(mid)}else{fmt.Println(small)}Go 特点if 可以带初始化语句ifv:getValue();v10{fmt.Println(v)}6. 循环for6.1 标准 forfori:0;i10;i{fmt.Println(i)}6.2 类 while 循环Go 没有 whilei:0fori10{i}6.3 无限循环for{fmt.Println(loop)}6.4 遍历 slice / mapfor rangenums:[]int{1,2,3}fori,v:rangenums{fmt.Println(i,v)}mapfork,v:rangem{fmt.Println(k,v)}7. 函数Function7.1 基本函数funcadd(aint,bint)int{returnab}7.2 多返回值Go特色funcswap(a,bint)(int,int){returnb,a}7.3 命名返回值funcsum(a,bint)(resultint){resultabreturn}7.4 可变参数funcsum(nums...int)int{total:0for_,v:rangenums{totalv}returntotal}8. 类struct 方法Go没有 class用struct method实现面向对象。8.1 struct结构体typePersonstruct{NamestringAgeint}8.2 创建对象p:Person{Name:Tom,Age:18}8.3 方法绑定 structfunc(p Person)Say(){fmt.Println(p.Name)}调用p.Say()8.4 指针方法修改对象func(p*Person)Grow(){p.Age}9. Go 的特殊语法 / 语言特色重点9.1 没有 while / do-while全部用 for 替代。9.2 多返回值是一等公民value,err:doSomething()这是 Go 最核心设计之一错误处理基础。9.3 error 不是异常没有 try/catchiferr!nil{returnerr}9.4 defer延迟执行functest(){deferfmt.Println(end)fmt.Println(start)}输出start end 常用于关闭文件、释放资源9.5 goroutine并发模型gofunc(){fmt.Println(run in background)}()9.6 channel通信机制ch:make(chanint)gofunc(){ch-10}()v:-ch fmt.Println(v) Go 的核心思想不要通过共享内存通信而要通过通信共享内存9.7 初始化简洁:x:109.8 没有隐式类型转换varaint10varbfloat64float64(a)9.9 switch 不需要 breakswitchx{case1:fmt.Println(one)case2:fmt.Println(two)}

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询