go 语言中常用的包
来自学习go语言.pdf 译者刑星
====
fmt 包fmt实现了格式化IO函数,这与c的printf和scanf类似,格式化短语派生于c
%v 默认格式的值。当打印结构时,加号(%+v)会增加字段
%#v go样式的值表达
%T 带有类型的go样式的值表达
io 提供了原始的io操作界面,主要人物就是os包这样的原始的IO进行封装,增加以下其他相关,是器据哟抽象功能在公共的接口上
bufio 这个包实现了缓冲的io,风中雨io.Reader和io.Write对象,创建了另一个对象(Reader和Writer)在提供缓冲的同时实现了一些文本IO
功能
sort 对数组和用户定义集合的原始的排序功能
strconv 提供了将字符串转换为基本数据类型,或者从基本数据类型转换为字符串的功能
os 提供了与平台无关的操作系统功能接口,设计为unix形式的
sync sync提供了基本的同步原语,例如互斥锁
flag 实现了命令解析
encoding/json 实现了编码和解码定义的json对象
html/template 数据驱动的模板,用于生成文本输出,例如html
将模板关联到数据结构上进行解析。模板内容指向数据结构的元素(通常结构的字段或者map的键)控制解析并且决定某个值会显示。模板扫描结构以便解析,而游标决定了当前位置杂结构中的值。
net/http 实现了http请求、相应和url解析,并且提供了可扩展的HTTP服务和基本的http客户端。
unsafe unsafe包含了Go程序中类型上所有不安全的操作。通过无须使用这个。
reflect 实现了运行时反射,允许程序通过抽象类型操作对象。通过用于处理静态类型interface{}的值,并且通过typeof解析出器动态类型信息,通常会返回一个有接口类型Type的对象。
ox/exec 包执行外部命令
===================
go语言核心包
1,strings
go语言在strings包中包含许多处理strings的方法,比如:
strings.Contains/Count/HasPrefix/HasSuffix/Index/Join/Repeat/Replace/Split/ToLower/ToUpper
有时候我们需要将一些字符串转换为二进制,或者将一些二进制转换为字符串
arr := []byte("test")
str := string([]byte{'a','b','c','e'})
2,Input/Output
io package 包含一些函数,另外有一些interface在其他的包中。
io package中主要的两个接口是Reader和Writer,Reader支持通过Read方法读,Writer支持通过Write方法写。
go语言中许多函数利用Reader or Writers作为参数。例如,io包有一个Copy函数,能将data从Reader copy到Writer。
func Copy(dst Writer, src Reader) (written int64, err error){}
---
为了从[]byte或 string 中读/写,可以利用在bytes包中的Buffer结构体
\\-1
var buf bytes.Buffer
buf.Write([]byte("test"))
buffer并没有被初始化,并且支持Reader和Writer接口。你可以调用buf.Bytes()将buffer转化为[]byte
\\-2
如果你只能从string中读取,你可以使用strings.NewReader方法,它比使用buffer要高效。
=========
Files 和Folders
在Go中使用os包中Open方法可以打开一个文件。
这里有一个例子:怎么读取文件中的内容,并将其打印到terminal中:
package main import (
"fmt"
"os"
) func main() {
file, err := os.Open("test.txt")
if err != nil {
//handle the error here
return
} defer file.Close() //get the file size
stat, err := file.Stat()
if err != nil {
return
} //read the file
bs := make([]byte, stat.Size())
_, err = file.Read(bs)
if err != nil {
return
} str := string(bs)
fmt.Println(str)
}
更短的例子:
package main import (
"fmt"
"io/ioutil"
) func main() {
bs, err := ioutil.ReadFile("test.txt")
if err != nil {
return
} str := string(bs)
fmt.Println(str)
}
怎么创建一个文件:
package main import (
"os"
) func main() {
file, err := os.Create("test.txt")
if err != nil {
//handle the error here
return
} defer file.Close() file.WriteString("xxxxx test file")
}
为了得到一个目录的内容,我们使用相同的os.Open函数,但是参数是一个目录路径,而不是文件名字
调用Readdir方法:
package main import (
"fmt"
"os"
) func main() {
dir, err := os.Open(".")
if err != nil {
return
} defer dir.Close() fileInfos, err := dir.Readdir(-)
if err != nil {
return
} for _, fi := range fileInfos {
fmt.Println(fi.Name())
}
}
递归遍历文件夹(读文件夹的内容,读取所有的子文件,所有的子子文件,...)
在path/filepath有一个Walk方法可以简化这一步骤
==========
go 语言中常用的包的更多相关文章
- SSH框架应用中常用Jar包用途介绍
struts2需要的几个jar包:1)xwork-core-2.1.62)struts2-core-2.1.83)ognl-2.7.34)freemarker-2.3.155)commons-io-1 ...
- java中常用的包、类、以及包中常用的类、方法、属性----sql和text\swing
java中常用的包.类.以及包中常用的类.方法.属性 常用的包 java.io.*; java.util.*; java.lang.*; java.sql.*; java.text.*; java.a ...
- R语言中的数据处理包dplyr、tidyr笔记
R语言中的数据处理包dplyr.tidyr笔记 dplyr包是Hadley Wickham的新作,主要用于数据清洗和整理,该包专注dataframe数据格式,从而大幅提高了数据处理速度,并且提供了 ...
- C语言中常用计时方法总结
转自:http://blog.csdn.net/fz_ywj/article/details/8109368 C语言中常用计时方法总结 1. time() 头文件:time.h 函数原型:time_t ...
- R语言中的机器学习包
R语言中的机器学习包 Machine Learning & Statistical Learning (机器学习 & 统计学习) 网址:http://cran.r-project ...
- JavaSE&&JavaEE&&JavaME的区别【Java中常用的包结构】
一.javaEEJavaSEJavaME用的同一个jar包吗? javaEE JavaSE javaME 用的JDK是同一个,开发j2SE工程的话只要有JDK就可以了,开发J2EE工程和J2ME工程除 ...
- Java开发中常用jar包整理及使用
本文整理了我自己在Java开发中常用的jar包以及常用的API记录. <!-- https://mvnrepository.com/artifact/org.apache.commons/com ...
- 列举Java中常用的包、类和接口
常用的类: BufferedReader ,BufferedWriter FileReader ,FileWirter String ,Integer Date ,Cla ...
- C语言中常用的字符串处理函数总结
C语言中字符串处理函数备注 此文仅用于自己研究和记录 字符串处理函数 1. char *gets(char *s); #include<stdio.h> 功能: 从标准输入读入字符,并保存 ...
随机推荐
- NOIP 考前 KMP练习
BZOJ 1461 && BZOJ 1729 KMP+BIT 一看就是字符串匹配但是不同的是要按照每个字符的排名情况. 首先对于数字x的排名,那么要判断x前小于x的数的个数,和x前小于 ...
- BZOJ 1046 最长不降子序列(nlogn)
nlogn的做法就是记录了在这之前每个长度的序列的最后一项的位置,这个位置是该长度下最后一个数最小的位置.显然能够达到最优. BZOJ 1046中里要按照字典序输出序列,按照坐标的字典序,那么我萌可以 ...
- HTTP 响应头信息
HTTP 响应头信息 HTTP请求头提供了关于请求,响应或者其他的发送实体的信息. 在本章节中我们将具体来介绍HTTP响应头信息.
- codeforces 724D(贪心)
题目链接:http://codeforces.com/contest/724/problem/D 题意:给定一个字符串和一个数字m,选取一个一个子序列s,使得对于字符串中任意长度为m的子序列都至少含有 ...
- PHP 监控服务器动态
预期准备 一个139邮箱,收到邮件后,可以免费给你短信提醒.如果你不需要短信提醒功能,用什么邮箱都可以 另外一个可以运行PHP文件的Web服务器(相当于监控服务器),现在免费的PHP网站空间很多,上网 ...
- 记录DIV中滚动位置刷新页面位置保持不变
一.js部分: <script type="text/javascript"> $(document).ready(function () { ...
- 鼠标焦点变化引起mouseout事件
做了个小手术,渐渐回归网络啦! 问题: 在自制的提示离鼠标太近时,会引起无法提示的功能. 自制提示离图片太近时,提示图片一直一闪一闪的,截图截不出来,就只放改善后的图片(不闪). 原因: 为什么呢?书 ...
- 十分钟了解分布式计算:Spark
Spark是一个通用的分布式内存计算框架,本文主要研讨Spark的核心数据结构RDD的设计思路,及其在内存上的容错.内容基于论文 Zaharia, Matei, et al. "Resili ...
- 从输入 URL 到浏览器接收的过程中发生了什么事情
从输入 URL 到浏览器接收的过程中发生了什么事情? 原文:http://www.codeceo.com/article/url-cpu-broswer.html 从触屏到 CPU 首先是「输入 U ...
- [读书笔记]自动装箱的陷阱以及==与equals
先看一段代码,来自周志明的<深入理解Java虚拟机>. Integer a = 1; Integer b = 2; Integer c = 3; Integer d = 3; Intege ...