A基础语法.go

前言:Go 语言(又称 Golang)以其简洁、高效的特性,在编程领域崭露头角。它由 Google 公司的 Robert Griesemer、Rob Pike 和 Ken Thompson 于 2007 年创建,旨在提高编程效率,简化并发编程,同时保持良好的性能。 

目录

一、引言

二、第一个 Go 程序

三、变量与数据类型

变量声明

基本数据类型

四、控制流语句

条件语句

循环语句

五、函数

函数定义

函数调用

匿名函数

六、数组与切片

数组

切片

七、映射(Map)

八、结构体

九、包与模块

模块

十、文件操作

总结


一、引言

Go 语言,简单高效,在编程界很受欢迎。它上手容易,干起活来还特别利索。今天咱就来唠唠 Go 语言的基础语法,⊣> 带你快速上手!

二、第一个 Go 程序

先来个简单的 Go 程序,感受一下。创建一个名为 main.go 的文件,写入以下代码:

package main

import "fmt"

func main() {
	fmt.Println("Hello, Go 世界!")
}

这段代码就像打招呼一样简单。package main 表示这是主包,程序从这儿开始跑。import "fmt"fmt 包拽进来,能帮咱在屏幕上打印东西。func main() 是程序的起点,相当于说 “从这儿开始执行”。fmt.Println 把括号里的内容打印出来,让它在屏幕上显示。

在终端里跑 go run main.go,就能看到程序热情地问候你了。就像迈出了成为程序员的第一步,是不是很酷?

三、变量与数据类型

变量声明

变量就是给数据起个名字,方便后面用。Go 里声明变量有两种方式:

var name string = "张三"
var age int = 18

 这就像是给两个小盒子分别贴上 “名字” 和 “年龄” 的标签,再把对应的内容放进去。或者用更简洁的方式:

name := "张三"
age := 18

这就像是对程序说 “嘿,这有个叫 name 的东西,它是字符串,值是张三”,省去了写变量类型的麻烦。

基本数据类型

Go 语言的数据类型可丰富了:

  • 布尔型(bool) :值只能是 truefalse,就像一个只能回答 “是” 或 “否” 的小朋友。

  • 整型(int、int8、int16、int32、int64、uint 等) :用来装整数的,不同类型的整型能装的数范围不一样。

  • 浮点型(float32、float64) :专门装小数的,float32 精度差点,float64 精度高些。

  • 字符串(string) :就是一串字符,用双引号把它串起来。比如 "Hello, Go" 就是一个字符串,一旦定了就改不了啦。

四、控制流语句

条件语句

程序可聪明了,能根据条件做不同反应。就像你看到红灯停,绿灯行一样。

  • if-else 语句:

age := 18
if age >= 18 {
	fmt.Println("已成年,可以去嗨啦!")
} else {
	fmt.Println("未成年,乖乖在家写作业哦!")
}

这就像是对程序说 “如果年龄大于等于 18,就打印可以嗨的信息,不然就打印写作业的信息”。

  • switch 语句:

day := "Monday"
switch day {
case "Monday":
	fmt.Println("今天是周一,打起精神开工!")
case "Tuesday":
	fmt.Println("今天是周二,继续努力!")
case "Wednesday":
	fmt.Println("今天是周三,快到周末啦!")
default:
	fmt.Println("其他日期,盼望着周五吧!")
}

这就像是给程序列了个清单,它会根据 day 的值来挑对应的内容打印。

循环语句

循环就像让程序重复做某件事,直到满足条件才停下来。

  • 传统的 for 循环:

for i := 0; i < 5; i++ {
	fmt.Println(i)
}

这就像是对程序说 “从 0 开始数,数到 4 就停,每次数一个数就打印出来”。

  • 无限循环:

for {
	fmt.Println("我陷入无限循环啦,救命啊!")
	// 通常得加个条件让它能跳出去,不然就一直唠叨
	// break
}

这就像是让程序一直唠叨一句话,不给它个 “break” 就停不下来。

  • 遍历循环(for-range):

names := [3]string{"张三", "李四", "王五"}
for index, name := range names {
	fmt.Printf("索引:%d,姓名:%s\n", index, name)
}

这就像是给程序一个名字列表,让它挨个把名字和位置打印出来。

五、函数

函数定义

函数就是把一段代码封装起来,方便重复用。就像把常用的操作做成一个工具。

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

这就像是教程序一个叫 “add” 的技能,给它两个整数,它就把它们加起来返回。

函数调用

有了函数,就可以随时随地调用它。就像你随时可以用手机拍照一样。

result := add(3, 5)
fmt.Println(result) // 输出 8

这就像是让程序用 “add” 技能算一下 3 和 5 的和,然后把结果打印出来。

匿名函数

匿名函数就像一个没有名字的技能,可以临时用。

func() {
	fmt.Println("我是个匿名函数,没有名字但很有用哦!")
}()

 这就像是让程序临时做一件事,但不给它起名字。

func execute(f func()) {
	f()
}

execute(func() {
	fmt.Println("我被当作参数传进来了!")
})

这就像是把一个技能当作礼物送给 execute 函数,让它帮忙执行。

六、数组与切片

数组

数组就是把一堆相同类型的数据搁在一起,长度固定。就像一排小格子,每个格子装同类型的东西。

var arr [5]int
// 或者
arr := [5]int{1, 2, 3, 4, 5}

 访问数组元素就像找格子位置一样,从 0 开始数。

fmt.Println(arr[0]) // 输出 1

切片

切片就像数组的 “小跟班”,长度可变,更灵活。创建切片的方式有:

  • 使用 make 函数:

slice := make([]int, 3)

这就像是让程序准备一个能装 3 个整数的切片。

  • 通过字面量创建:

slice := []int{1, 2, 3}

这就像是直接把 1、2、3 放进切片里。

切片还能动态扩展,就像气球能吹大一样。

slice := []int{1, 2, 3}
slice = append(slice, 4)
fmt.Println(slice) // 输出 [1 2 3 4]

这就像是把 4 加到切片末尾,让它变长。

七、映射(Map)

映射就是一组键值对,像一本电话簿,通过名字找电话号码。

student := make(map[string]int)
student["张三"] = 18
student["李四"] = 19

这就像是在电话簿里给 “张三” 和 “李四” 分别登记了年龄。

访问映射元素就像查电话簿。

age := student["张三"]
fmt.Println(age) // 输出 18

 还能遍历映射,就像一页页翻看电话簿。

for key, value := range student {
	fmt.Printf("姓名:%s,年龄:%d\n", key, value)
}

这就像是把电话簿里的名字和年龄都打印出来。

八、结构体

结构体就像一个自定义的小盒子,能把不同类型的数据装在一起。

type Person struct {
	Name string
	Age  int
	Addr string
}

这就像是设计了一个 “Person” 盒子,能装名字、年龄和地址。

创建结构体实例并访问字段就像把具体数据放进盒子,再从盒子里取出来。

person := Person{
	Name: "张三",
	Age:  18,
	Addr: "北京",
}

fmt.Println(person.Name) // 输出 张三

 还能给结构体定义方法,就像教盒子一个新技能。

func (p Person) SayHello() {
	fmt.Printf("你好,我是%s,住在%s,今年%d岁啦!\n", p.Name, p.Addr, p.Age)
}

person.SayHello() // 调用方法

这就像是让盒子自己介绍一下自己。

九、包与模块

Go 程序由包组成,包就像一个个文件夹,把相关的代码放在一起。

package main

这就像是给一个包起名叫 “main”。

要使用其他包里的代码,得先导入。

import "fmt"

这就像是把 “fmt” 包里的东西搬到自己这儿来用。

模块

模块就像一个大包裹,把多个包打包在一起。

  1. 在项目根目录下运行命令 go mod init module_name,这就像是给包裹起个名字。

  2. Go 工具会自动生成一个 go.mod 文件,用来记录包裹里都有啥玩意儿。

依赖其他外部包的时候,Go 会自动把它们下载过来,就像快递送货上门一样,方便得很。

十、文件操作

Go 语言的文件操作功能很强大,能帮咱轻松搞定文件相关的事儿。

  • 创建文件

file, err := os.Create("test.txt")
if err != nil {
	fmt.Println("哎呀,创建文件失败啦:", err)
	return
}
defer file.Close() // 这个 defer 就像个小跟班,等函数快结束时把文件关上

这就像是让程序新建一个叫 “test.txt” 的文件。

  • 写入文件

content := "Hello, Go 世界!"
_, err = file.WriteString(content)
if err != nil {
	fmt.Println("哎呀,写入文件失败啦:", err)
	return
}

这就像是往文件里写 “Hello, Go 世界!”,把想说的话都存进去。

  • 读取文件

data, err := os.ReadFile("test.txt")
if err != nil {
	fmt.Println("哎呀,读取文件失败啦:", err)
	return
}
fmt.Println(string(data)) // 把文件内容都打印出来,看看写了啥

这就像是把文件里的内容都读出来,展示在屏幕上。

总结

恭喜你掌握了 Go 语言的基础语法!从"Hello World"到变量声明,从流程控制到函数编写,再到数组、映射、结构体的使用,以及包管理和文件操作,你已经搭建起了坚实的编程基础。现在可以尝试一些有趣的小项目,比如开发简易计算器或文件读写工具。后续还可以探索更高级的主题,如并发编程、接口设计和反射机制。记住,编程的精髓在于实践,多写代码,多思考,你一定能成为优秀的 Go 开发者!继续加油吧!

你可能感兴趣的:(26字母学习:Go入门篇,golang,开发语言,后端,青少年编程,visual,studio,code,学习方法)