常用的库
库名 | 功能 |
---|
bufio | 带缓冲的 I/O 操作 |
bytes | 实现字节操作 |
container | 封装堆、列表和环形列表等容器 |
crypto | 加密算法 |
database | 数据库驱动和接口 |
debug | 各种调试文件格式访问及调试功能 |
encoding | 常见算法如 JSON、XML、Base64 等 |
flag | 命令行解析 |
fmt | 格式化操作 |
go | Go语言的词法、语法树、类型等。可通过这个包进行代码信息提取和修改 |
html | 转义及模板系统 |
image | 常见图形格式的访问及生成 |
io | 实现 I/O 原始访问接口及访问封装 |
math | 数学库 |
net | 网络库,支持 Socket、HTTP、邮件、RPC、SMTP 等 |
os | 操作系统平台不依赖平台操作封装 |
path | 兼容各操作系统的路径操作实用函数 |
plugin | Go 1.7 加入的插件系统。支持将代码编译为插件,按需加载 |
reflect | 语言反射支持。可以动态获得代码中的类型信息,获取和修改变量的值 |
regexp | 正则表达式封装 |
runtime | 运行时接口 |
sort | 排序接口 |
strings | 字符串转换、解析及实用函数 |
time | 时间接口 |
text | 文本模板及 Token 词法器 |
文件读写库
io/ioutil
os
bufio
io
package main
import (
"bufio"
"fmt"
"io"
"io/ioutil"
"os"
"strings"
)
func read_line_content() {
filename := "./base/test19.go"
file, err := os.OpenFile(filename, os.O_RDONLY, 0666)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
defer file.Close()
reader := bufio.NewReader(file)
for true {
line, _, err := reader.ReadLine()
if err == io.EOF {
break
} else if len(line) == 0 {
fmt.Println("啥都没有")
continue
} else if strings.TrimSpace(string(line)) == "" {
fmt.Println("多余空白行")
continue
}
fmt.Println(string(line))
}
}
func read_all_content() {
filename := "./base/test19.go"
content, err := ioutil.ReadFile(filename)
if err != nil {
fmt.Printf("错误 %s\n", err)
} else {
fmt.Println(string(content))
}
}
func read_all_content2() {
filename := "./base/test19.go"
if file, err := os.Open(filename); err == nil {
defer file.Close()
if content, err := ioutil.ReadAll(file); err == nil {
fmt.Println(string(content))
} else {
fmt.Println(err)
}
} else {
fmt.Println(err)
}
}
func main() {
read_line_content()
fmt.Println("-------------------------")
read_all_content()
fmt.Println("-------------------------")
read_all_content2()
}
package main
import (
"bufio"
"fmt"
"io"
"io/ioutil"
"os"
)
func os_write_file() {
filename := "./base/requirments.txt"
file, err := os.OpenFile(filename, os.O_CREATE, 0777)
defer file.Close()
if err == nil {
file.WriteString("lxml\n")
file.WriteString("requests\n")
} else {
fmt.Println(err)
}
}
func ioutil_write_file() {
filename := "./base/requirments.txt"
var contents = []string{"pymysql", "redis"}
var datas []byte
for _, content := range contents {
data := []byte(content)
_n := []byte("\n")
if datas != nil {
datas = append(datas, _n...)
}
datas = append(datas, data...)
}
err := ioutil.WriteFile(filename, datas, 0666)
if err != nil {
fmt.Println(err)
}
}
func io_write_file() {
filename := "./base/requirments.txt"
file, err := os.OpenFile(filename, os.O_CREATE, 0777)
defer file.Close()
if err == nil {
io.WriteString(file, "spider\n")
io.WriteString(file, "django\n")
} else {
fmt.Println(err)
}
}
func bufio_write_file() {
filename := "./base/requirments.txt"
file, err := os.OpenFile(filename, os.O_CREATE, 0777)
defer file.Close()
if err == nil {
buf_writer := bufio.NewWriter(file)
buf_writer.WriteString("flask\n")
buf_writer.WriteString("django\n")
fmt.Println(buf_writer.Size())
buf_writer.Flush()
} else {
fmt.Println(err)
}
}
func main() {
bufio_write_file()
}
网络请求库
net/http
net/url
package main
import (
"fmt"
"io"
"io/ioutil"
"net/http"
"net/url"
)
func http_req(method, url string, body io.Reader) {
request, err := http.NewRequest(method, url, body)
if err == nil {
client := http.Client{}
response, err := client.Do(request)
if err == nil {
body, err := ioutil.ReadAll(response.Body)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(string(body))
}
}
}
}
func main() {
query_params := url.Values{}
url_, err := url.Parse("http://www.baidu.com/s")
if err != nil {
return
}
query_params.Set("wd", "周杰伦")
url_.RawQuery = query_params.Encode()
urlPath := url_.String()
fmt.Println(urlPath)
http_req("GET", urlPath, nil)
}
json转换库
encoding/json
package main
import (
"encoding/json"
"fmt"
)
func jsonstring2interface() {
json_string := `["1", "2"]`
var json_arr []interface{}
json.Unmarshal([]byte(json_string), &json_arr)
fmt.Println(json_arr)
json_string = `{"name":"test","age":["1","2"]}`
var json_map map[string]interface{}
json.Unmarshal([]byte(json_string), &json_map)
fmt.Println(json_map)
fmt.Println(json_map["name"])
fmt.Println(json_map["sex"])
}
func interface2jsonstring() {
var arr = []string{"1", "2"}
fmt.Println(arr)
if arr_string, err := json.Marshal(arr); err != nil {
fmt.Println(err)
} else {
fmt.Println(string(arr_string))
}
m := make(map[string]interface{})
m["name"] = "test"
m["hobby"] = []string{"ball", "eat"}
fmt.Println(m)
if map_string, err := json.Marshal(m); err != nil {
fmt.Println(err)
} else {
fmt.Println(string(map_string))
}
}
func main() {
interface2jsonstring()
}