Go语言学习之常用包整理|Go主题月

253 阅读4分钟

作者:看那个码农

公众号:看那个码农

上期内容介绍了Go语言学习之栈和堆|Go主题月

  • Go语言的栈和堆

本篇内容将继续带领大家走进Go语言的世界。

1.本文简介

Go语言的常用包

本文对Go语言中的几个常用包进行了整理。

参考:studygolang.com/pkgdoc

1.fmt

该包实现格式化的输入输出操作,

fmt.Printf()和fmt.Println()是开发者使用最为频繁的函数。

例如下面的案例:

package main

import "fmt"

func main() {
   var a string
   a = "Hello World"
   fmt.Println(a)
   fmt.Printf("%s",a)
}

输出为:

image.png

2.io

该包实现了一系列非平台相关的IO相关接口和实现,比如提供了对os中系统相关的IO功能的封装。我们在进行流式读写(比如读写文件)时,通常会用到该包。

3.bufio

该包在io的基础上提供了缓存功能。在具备了缓存功能后, bufio可以比较方便地提供ReadLine之类的操作。

4.strconv

该包实现对字符串和基本数据类型之间的转换。

基本数据类型包括:布尔、整型(包括有/无符号、二进制、八进制、十进制和十六进制)和浮点型等。

例如下面的案例:

package main

import (
   "fmt"
   "reflect"
   "strconv"
)

func main() {
   i, err := strconv.Atoi("-42")
   fmt.Println(reflect.TypeOf(i).String(), i, err)
   s := strconv.Itoa(-42)
   fmt.Println(reflect.TypeOf(s).String(), s)
}

输出为:

image.png

该案例是完成了数字转换。

  • Atoi (表示 ascii to integer)是把字符串转换成整型数的一个函数
  • Itoa (表示 integer to ascii)函数把整数转换成字符串,并返回指向转换后的字符串的指针。

5.os

该包提供了对操作系统功能的非平台相关访问接口。接口为Unix风格。提供的功能包括文件操作、进程管理、信号和用户账号等。

6.sync

该包提供了基本的同步原语。在多个goroutine访问共享资源的时候,需要使用sync中提供的锁机制。

7.flag

该包提供命令行参数的规则定义和传入参数解析的功能。绝大部分的命令行程序都需要用到这个包。

例如下面的案例:

package main

import (
   "flag"
   "fmt"
)
//定义命令行参数
var mode = flag.String("mode","","process mode")

func main() {
   //解析命令行参数
   flag.Parse()
   //输出命令行参数
   fmt.Println(*mode)
}

上面这个案例是通过提前定义一些命令行指令和对应变量,在运行时输入对应参数的命令行参数后,经过flag包的解析后即可通过定义的变量获取命令行的数据。

8.encoding/json

JSON目前广泛用做网络程序中的通信格式。本包提供了对JSON的基本支持,比如从一个对象序列化为JSON字符串,或者从JSON字符串反序列化出一个具体的对象等。

9.net/http

通过该包,只需要数行代码,即可实现一个爬虫或者一个Web服务器。

该包中包含http客户端服务端的实现,

利用Get,Head,Post,以及PostForm

可以实现HTTP或者HTTPS的请求。

例如下面案例所示:

package main

import (
   "net/http"
)

func main() {
   http.HandleFunc("/", helloworld)
   http.ListenAndServe(":8080", nil)
}

func helloworld(w http.ResponseWriter, r *http.Request) {
   w.Write([]byte("Hello World\n"))
}

在上述案例中,做了几个工作

  1. 导入net/http包
  2. 在main函数中,使用方法HandleFunc创建了路由/,这个方法接受一个一个模式和一个函数,前者描述了路径,后者指定如何对发送到该路径的请求做出响应。
  3. 函数helloworld接受一个http. ResponseWriter和一个指向请求的指针。这意味着在这个函数中,可查看或操作请求,再将响应返回给客户端。同时这里使用了方法Write来生成响应。这个方法生成的HTTP响应包含状态、报头和响应体。
  4. []byte声明一个字节切片并将字符串值转换为字节。
  5. 为响应客户端,使用方法ListenAndServe来启动一个服务器,这个服务器监听localhost和端口8000

如果你觉得这篇内容对你有帮助的话:

1、点赞支持下吧,让更多的人也能看到这篇内容

2、关注公众号:看那个码农,我们一起学习一起进步。

本文正在参与「掘金 2021 春招闯关活动」, 点击查看 活动详情