文章目录
- 前言
- 几种库
- Net库 (网络库,支持 Socket、HTTP、邮件、RPC、SMTP 等)
- 重要的子包和功能:
- 示例
- OS库(操作系统平台不依赖平台操作封装)
- 主要功能:
- 示例
- path库(兼容各操作系统的路径操作实用函数)
- 常用函数:
- 示例
- 总结
- 专栏集锦
- 写在最后
前言
上一篇,我们介绍了image、IO、math三个库,这篇我们继续介绍剩下的库
几种库
Net库 (网络库,支持 Socket、HTTP、邮件、RPC、SMTP 等)
在 Go 语言的标准库中,net 包提供了对网络操作的支持,包括基本的网络协议、Socket 编程、HTTP 客户端和服务器等。
net 包包含多个子包,其中一些主要的子包包括 net/http、net/url、net/rpc 等。
重要的子包和功能:
- net/http: 提供了用于构建 HTTP 客户端和服务器的功能,包括处理请求和响应、创建路由、设置中间件等。
- net/url: 用于解析和构建 URL,提供了对 URL 中各个部分的访问方法。
- net/rpc: 实现了远程过程调用(RPC)的基本功能,用于构建分布式系统。
- net: 提供了一些基础的网络操作,如 Dial 用于建立网络连接,Listen 用于监听网络端口。
示例
package main import ( "fmt" "net/http" ) func main() { // 设置路由 http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, "Hello, Go HTTP Server!") }) // 启动服务器,监听在 8080 端口 err := http.ListenAndServe(":8080", nil) if err != nil { fmt.Println("Error starting server:", err) } }
在这个示例中,使用 http.HandleFunc 设置了一个简单的路由,该路由处理根路径 (“/”) 的 HTTP 请求,并返回一个简单的文本响应。然后,使用 http.ListenAndServe 启动了一个 HTTP 服务器,监听在 8080 端口。当访问 http://localhost:8080/ 时,将会看到服务器返回的文本内容。
OS库(操作系统平台不依赖平台操作封装)
在 Go 语言的标准库中,os 包提供了与操作系统交互的功能,包括文件和目录操作、环境变量、程序退出等。os 包中的函数和类型允许你执行许多与操作系统相关的任务。
主要功能:
- 文件和目录操作:
- Create:创建文件。
- Open:打开文件。
- Mkdir:创建目录。
- Remove:删除文件或目录。
- Rename:重命名文件或目录。
- 环境变量:
- Getenv:获取环境变量的值。
- Setenv:设置环境变量的值。
- Environ:获取所有环境变量的键值对。
- 程序退出:
- Exit:终止程序运行。
- 标准输入输出:
- Stdin:标准输入。
- Stdout:标准输出。
- Stderr:标准错误输出。
示例
package main import ( "fmt" "os" ) func main() { // 创建文件并写入内容 file, err := os.Create("example.txt") if err != nil { fmt.Println("Error creating file:", err) return } defer file.Close() content := []byte("Hello, Go File!") _, err = file.Write(content) if err != nil { fmt.Println("Error writing to file:", err) return } fmt.Println("File created and written successfully.") // 打开文件并读取内容 openedFile, err := os.Open("example.txt") if err != nil { fmt.Println("Error opening file:", err) return } defer openedFile.Close() readContent := make([]byte, 100) _, err = openedFile.Read(readContent) if err != nil { fmt.Println("Error reading from file:", err) return } fmt.Printf("Read from file: %s\n", readContent) // 创建目录 err = os.Mkdir("example_dir", 0755) if err != nil { fmt.Println("Error creating directory:", err) return } fmt.Println("Directory created successfully.") // 重命名文件 err = os.Rename("example.txt", "renamed_example.txt") if err != nil { fmt.Println("Error renaming file:", err) return } fmt.Println("File renamed successfully.") }
在这个示例中,使用 os.Create 创建一个文件,然后使用 file.Write 写入内容。
接着,使用 os.Open 打开这个文件,使用 openedFile.Read 读取内容。
之后,使用 os.Mkdir 创建一个目录,并使用 os.Rename 重命名文件。
path库(兼容各操作系统的路径操作实用函数)
在 Go 语言的标准库中,path 包(实际上是 path/filepath 包)提供了用于处理文件路径的函数。
这个包的目的是使路径处理在不同操作系统上都能保持一致性,即使操作系统的路径分隔符不同。
常用函数:
- Join: 将多个路径元素连接成一个路径。该函数会根据操作系统自动选择正确的路径分隔符。
- Base: 返回路径的最后一个元素。
- Dir: 返回路径除去最后一个元素的部分。
- Clean: 清理路径,解析路径中的 “…”、“.” 等元素。
- IsAbs: 判断路径是否是绝对路径。
- Rel: 返回基准路径到目标路径的相对路径。
示例
package main import ( "fmt" "path/filepath" ) func main() { // Join函数:连接路径 joinedPath := filepath.Join("dir", "subdir", "file.txt") fmt.Println("Joined Path:", joinedPath) // Base函数:获取路径的最后一个元素 base := filepath.Base("/path/to/file.txt") fmt.Println("Base:", base) // Dir函数:获取路径除去最后一个元素的部分 dir := filepath.Dir("/path/to/file.txt") fmt.Println("Dir:", dir) // Clean函数:清理路径 cleanPath := filepath.Clean("/path/to/../file.txt") fmt.Println("Cleaned Path:", cleanPath) // IsAbs函数:判断路径是否是绝对路径 isAbs := filepath.IsAbs("/path/to/file.txt") fmt.Println("Is Absolute Path:", isAbs) // Rel函数:获取基准路径到目标路径的相对路径 relativePath, err := filepath.Rel("/path/to", "/path/to/file.txt") if err != nil { fmt.Println("Error getting relative path:", err) } else { fmt.Println("Relative Path:", relativePath) } }
在这个示例中,使用了 path/filepath 包的一些函数,展示了路径连接、获取最后一个元素、获取路径部分、清理路径、判断是否是绝对路径以及获取相对路径等操作。
这些函数使得在不同操作系统上处理文件路径变得更加简便。
总结
这里我们介绍了3个库Net、OS、path3个库, 下一篇我们将介绍其他的几种标准库
专栏集锦
大佬们可以收藏以备不时之需:
Spring Boot 专栏:http://t.csdnimg.cn/peKde
ChatGPT 专栏:http://t.csdnimg.cn/cU0na
Java 专栏:http://t.csdnimg.cn/YUz5e
Go 专栏:http://t.csdnimg.cn/Jfryo
Netty 专栏:http://t.csdnimg.cn/0Mp1H
Redis 专栏:http://t.csdnimg.cn/JuTue
Mysql 专栏:http://t.csdnimg.cn/p1zU9
架构之路 专栏:http://t.csdnimg.cn/bXAPS
写在最后
感谢您的支持和鼓励! 😊🙏
如果大家对相关文章感兴趣,可以关注公众号"架构殿堂",会持续更新AIGC,java基础面试题, netty, spring boot, spring cloud等系列文章,一系列干货随时送达!
猜你喜欢
- 1小时前如何快速打开github
- 1小时前uniapp从入门到精通(全网保姆式教程)~ 别再说你不会开发小程序了
- 1小时前2023年最新最全uniapp入门学习,零基础入门uniapp到实战项目,unicloud数据后台快速打造uniapp小程序项目
- 1小时前从零基础到精通:Flutter开发的完整指南
- 1小时前【粉丝福利社】Flutter小白开发——跨平台客户端应用开发学习路线(文末送书-完结)
- 1小时前Python基础第五篇(Python数据容器)
- 1小时前【前后端分离与不分离的区别】
- 1小时前【C语言 数据结构】堆与二叉树(下)
- 1小时前速学数据结构 | 树 森林 二叉树 的概念详讲篇
- 1小时前支付宝怎样开通商家服务(支付宝怎样开通商家服务收款码)
网友评论
- 搜索
- 最新文章
- 热门文章