santisify Site

Back

golang学习之路:从入门到实践Blur image

本人比较看重go的简洁性、跨平台不依赖运行时环境以及高并发(都是相对于Java),同时,我也比较侧重于后端开发,毕竟大部分理工男(懂的都懂)

我也算是开始自己的go语言学习了,但愿不要想java那样…

基础语法#

变量和常量数据类型#

流程控制#

函数和方法#

指针#

错误处理#

Error样例:

方法#

方法定义:

绑定一个已定义类型的函数称为方法。方法与函数的区别在于,方法有一个特殊的接收者参数,它表示调用该方法的实例。接收者可以是值类型或指针类型。

已定义类型须为我们自己定义的类型,不能是内置类型(如int、string等),也不能是其他包中定义的类型。

func (接收者 接收者类型) 方法名(参数列表) 返回值列表 {
	// 方法体
}
go

接收者类型:值接收者(不改变参数值),指针接收者(改变参数值)

样例:

接口#

接口定义:

接口为Go语言中实现多态的重要特性,它定义一组方法的签名,但不进行具体实现

若一个类型实现了接口中的所有方法,则该类型实现了该接口,不需要显示声明

type 接口名 interface {
	方法1(参数列表) 返回值列表
	方法2(参数列表) 返回值列表
	...
}

//空接口
var x interface{} 
//空接口可以存储任意类型的值, 类似于Object(Java) any(Typescript)
x := "Hello, World!"
go

样例:

Go面向对象#

Go语言虽然不是传统意义上的面向对象语言,但它支持一些面向对象的特性,如结构体、方法和接口等。

组合替代继承:Go语言不支持类的继承,但可以通过组合来实现类似的功能。通过将一个结构体嵌入到另一个结构体中,可以实现代码复用和行为扩展。

样例1

样例2:

包与包的导入#

每个go源文件都必须属于一个包,声明在第一行

package main //main包是一个特殊的包,它定义了一个独立可执行的程序,而不是一个库。main包必须包含一个名为main的函数,作为程序的入口点。
package mypackage //自定义包,通常用于组织代码和实现模块化。包名通常与目录名相同,便于管理和导入。
go

包导入机制:

import (
	"标准包名"
	"第三方包"
	"项目内部包"
	"自定义包"
)

//也可以使用单个导入语句导入一个包
import "fmt"
import "github.com/gin-gonic/gin"
go

既然提到包的导入,就不得不提包的可见性了:

  • 首字母大写的标识符是导出的,可以在包外部访问。
  • 首字母小写的标识符是未导出的,只能在包内部访问。

go常用标准库:

  • fmt:格式化输入输出
  • os:操作系统功能
  • io:输入输出操作
  • net/http:HTTP客户端和服务器
  • encoding/json:JSON编码和解码
  • time:时间和日期处理
  • math/rand:随机数生成
  • strings:字符串操作
  • strconv:字符串与基本数据类型转换
  • \cdots \cdots \cdots

若需要其他标准库可查询官方文档

样例:

反射#

定义:程序在运行时检查其自身的结构和行为的能力。

核心:interface{} + reflect

var x int = 42
// 类型信息
t := reflect.TypeOf(x)

// 值信息
v := reflect.ValueOf(x)
go

Go工具链#

Go工具链是Go语言提供的一组命令行工具,用于构建、测试、安装和管理Go代码。常用的Go工具链包括:

  • go mod: Go模块依赖管理
  • go build: 编译程序生成可执行文件
  • go run: 编译直接运行Go程序
  • go test: 运行测试,支持单元测试、示例测试和基准测试。
  • go fmt: 格式化代码
  • go get: 添加依赖包到模块
  • go install: 编译并安装包或命令
  • go vet: 静态分析工具,检查代码中的潜在问题
  • go doc: 查看文档

调试、分析工具(pprof,日志库)#

Go提供了强大的调试和性能分析工具:

  • Delve调试器: Go语言专用的调试器,支持断点、单步执行、变量查看等功能
  • pprof性能分析: Go内置的性能分析工具,用于分析CPU和内存使用情况,帮助开发者优化程序性能
  • 日志库: Go标准库提供了基本的日志功能(log包),同时也有第三方日志库(如logrus、zap等)提供更丰富的日志功能和性能优化
  • 内置工具: racedetector, benchmark
golang学习之路:从入门到实践
https://santisify.top/blog/other/golang-learn
Author santisify
Published at June 19, 2026
Comment seems to stuck. Try to refresh?✨