Go 语言零基础怎么入门:三个小例子吃透基础语法

编程狮(w3cschool.cn) 2026-09-04 18:30:50 浏览数 (57)
反馈

go 语言入门 其实不难,核心就三步:先把代码跑起来,再用 := 短声明和切片把变量与集合写熟,最后用多返回值处理错误。它把 C 和 Java 里啰嗦的地方都砍掉了:没有继承、变量能自动推断、一个函数还能同时返回多个值。你之所以觉得难,多半是被"要先装环境、要懂编译"吓住了。今天这篇文章,编程狮就带你用三个能直接运行的小例子,把变量短声明、切片与 map、函数多返回值这三块核心语法吃透,并且告诉你一种不用装环境也能练 Go 的办法。

封面图

一、go 语言入门:先把代码跑起来

Go 是编译型语言,意思是你写的代码要先编译成机器能跑的程序。最正规的做法是装官方 Go 工具链,配好 GOPATHGOROOT,再用 go run 文件名.go 直接跑。但对纯新手来说,第一步最省事的是先别碰本地环境。

Go 官方和不少教程站都提供了浏览器里直接运行代码的能力,你粘贴一段代码点运行就能看到输出,特别适合先建立"写进去、跑出来"的手感。想系统看语法时,对照 Go 教程 边读边试,比对着文档硬啃更高效。

等你对语法有了大致印象,再回到本地装环境也不迟。装好后新建 hello.go,写 package mainfunc main(),这就是每个 Go 程序的固定骨架:main 包是可执行程序的入口,main 函数是真正开始跑的地方。记住这个骨架,后面三个例子都套它。

二、变量与短声明:go 语言入门的第一道关

go 变量 的声明有两种写法。第一种是完整写法 var name string = "小明",第二种是更常用的短声明 name := "小明"。那个冒号加等号 := 是 Go 的招牌语法,意思是"声明并赋值,类型你帮我推断"。

package main


import "fmt"


func main() {
    name := "小明"
    age := 18
    fmt.Println("我叫", name, "今年", age, "岁")
}

这段代码里,nameage 都没写类型,Go 根据等号右边的值自动判断成字符串和整数。fmt.Println 负责把内容打印到屏幕,多个值用逗号隔开就会自动空格拼接。和 Java 必须 String name = "小明"、C 必须 char name[] 比,Go 的写法明显更轻。

短声明有个铁律:它只能用在一个函数内部,不能写在函数外面;函数外面声明变量必须用 var。新手常把 := 写到包级别导致编译报错,记住这一条能少踩很多坑。变量先用起来,后面切片和函数才好展开。

三、切片与 map:Go 比 C/Java 更省心的数据结构

处理一堆数据时,Go 给了你两样好东西:切片(slice)和 map。切片可以理解成"会自动变长的数组",不用像 C 那样提前算好长度;map 则是键值对的集合,相当于其他语言里的字典或哈希表。

package main


import "fmt"


func main() {
    fruits := []string{"苹果", "香蕉", "橙子"}
    for i, v := range fruits {
        fmt.Println(i, v)
    }


    score := map[string]int{"语文": 90, "数学": 95}
    fmt.Println("数学分数:", score["数学"])
}

go 切片 用 []类型{...} 定义,range 能同时拿出下标和值,遍历比 C 的 for (i=0;...) 清爽太多。go map 则是 map[键类型]值类型{...},用中括号加键就能取值,比如 score["数学"] 直接拿到 95。这两样几乎覆盖了日常九成的数据组织需求。

和 Java 的 ArrayList、C 的手动内存管理比,Go 把这些常用结构做成了语言内置的一等公民,既不用引包也不用手动释放。语法细节记不准时随时翻文档,练多了自然就形成肌肉记忆。

四、函数与多返回值:一个 return 拿多个结果

很多语言一个函数只能返回一个结果,要拿多个就得靠结构体或输出参数。Go 不一样,go 函数 天然支持多返回值,这也是它最讨喜的特性之一。

package main


import "fmt"


func divmod(a, b int) (int, int) {
    return a / b, a % b
}


func main() {
    q, r := divmod(10, 3)
    fmt.Println("商", q, "余数", r)
}

divmod 这个函数签名里 (int, int) 表示它返回两个整数:商和余数。调用时左边用两个变量 q, r 一次性接住,非常直观。Go 标准库里大量函数都用"返回值 + error"的双返回模式来报错误,比如读文件失败了就返回 nil, err,你用 if err != nil 判断即可,比 Java 抛异常更线性、更好读。

刚从 Java 转过来的人,一开始会不习惯没有异常机制,但写几周后往往反而觉得这种显式处理错误的方式更踏实。多返回值是 Go 工程化风格的核心,早点用熟收益很大。

五、把三个例子串成可运行的练习

学完变量、切片、函数,你已经能用 Go 写点小逻辑了。下面这个例子把前面三点串起来,顺便演示不装环境也能练:打开任意"在线运行 Go 代码"的页面,粘贴进去点运行就行。

package main


import "fmt"


func main() {
    fmt.Println("编程狮(www.w3cschool.cn) Go 入门练习")
    scores := []int{88, 92, 76}
    total := 0
    for _, s := range scores {
        total += s
    }
    fmt.Println("平均分:", total/len(scores))
}

这段先打印一句欢迎语,再用切片装三个分数,range 累加出总分,最后除以人数得到平均分。它用到了短声明、切片遍历、内置函数 len,正好是你刚学的三块。想再往前走,可以顺着 Gin 框架教程 看看怎么用 Gin 把 Go 写成一个能响应请求的 Web 服务。go 语言入门 最该坚持的,就是每学一点就立刻敲一遍,别等"全懂了"才动手。

从其他语言转 Go 要注意的点

总结

go 语言入门 的核心不是记多少关键字,而是适应它"少即是多"的设计:变量用 := 短声明让代码变轻;切片和 map 把常用数据结构做成语言内置,省去引包和内存管理的麻烦;函数多返回值让错误处理和批量取数都更直白。回顾一下你今天拿走的四点:固定骨架 package main + func main=:= 的区别;range 遍历切片和 map;双返回值接错误的写法。

下一步建议把结构体和接口补上,再试试用 Gin 写一个返回 JSON 的小接口,你就能体会 Go 在后端开发里的爽点。语法记不住就多敲,手感比记忆更可靠。

延伸学习

想把 Go 从"能跑"带到"能写项目",建议按这个顺序补:

  1. 先跟着 Go 语言入门课程 把语法体系系统过一遍,比零散查文档更连贯;
  2. 对切片还拿不准时,这篇 Go 切片详解笔记 讲清为什么该放弃数组、拥抱切片;
  3. 学到并发卡壳了,这篇 Go 并发控制笔记 用 select 语句拆解并发操作的精华。

常见问题

Q:不装 Go 环境能学吗?

能。浏览器里的在线运行页面可以编译并执行代码片段,足够覆盖语法练习阶段。但要做多文件项目、引第三方包、跑 Web 服务,还是得在本地装官方工具链。建议先用在线方式建立手感,再装环境做真实项目。

Q::= 和 = 到底什么时候用?

函数内部第一次声明并赋值用 :=,它同时完成"声明+推断类型+赋值";之后给已存在的变量重新赋值用 =。函数外面不能用 :=,只能用 var。最常见的报错就是在外面写了 :=,编译器会提示"不允许在非声明语境使用 :="。

Q:为什么 Go 没有异常机制?

Go 的设计哲学是让错误显式可见。它用多返回值把错误 error 作为普通值返回,调用方必须自己判断 if err != nil。这样错误处理散落在代码里、不会被悄悄吞掉,工程上更可控。刚转过来会不习惯,写熟后反而觉得比 try-catch 更清晰。

0 人点赞