文章目录
-
-
- 前言
- 几种库
-
- 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 mainimport ("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 mainimport ("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 mainimport ("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等系列文章,一系列干货随时送达!
还没有评论,来说两句吧...