来自学习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 语言中常用的包的更多相关文章

  1. 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 ...

  2. java中常用的包、类、以及包中常用的类、方法、属性----sql和text\swing

    java中常用的包.类.以及包中常用的类.方法.属性 常用的包 java.io.*; java.util.*; java.lang.*; java.sql.*; java.text.*; java.a ...

  3. R语言中的数据处理包dplyr、tidyr笔记

    R语言中的数据处理包dplyr.tidyr笔记   dplyr包是Hadley Wickham的新作,主要用于数据清洗和整理,该包专注dataframe数据格式,从而大幅提高了数据处理速度,并且提供了 ...

  4. C语言中常用计时方法总结

    转自:http://blog.csdn.net/fz_ywj/article/details/8109368 C语言中常用计时方法总结 1. time() 头文件:time.h 函数原型:time_t ...

  5. R语言中的机器学习包

    R语言中的机器学习包   Machine Learning & Statistical Learning (机器学习 & 统计学习)  网址:http://cran.r-project ...

  6. JavaSE&&JavaEE&&JavaME的区别【Java中常用的包结构】

    一.javaEEJavaSEJavaME用的同一个jar包吗? javaEE JavaSE javaME 用的JDK是同一个,开发j2SE工程的话只要有JDK就可以了,开发J2EE工程和J2ME工程除 ...

  7. Java开发中常用jar包整理及使用

    本文整理了我自己在Java开发中常用的jar包以及常用的API记录. <!-- https://mvnrepository.com/artifact/org.apache.commons/com ...

  8. 列举Java中常用的包、类和接口

    常用的类: BufferedReader ,BufferedWriter FileReader    ,FileWirter String      ,Integer Date        ,Cla ...

  9. C语言中常用的字符串处理函数总结

    C语言中字符串处理函数备注 此文仅用于自己研究和记录 字符串处理函数 1. char *gets(char *s); #include<stdio.h> 功能: 从标准输入读入字符,并保存 ...

随机推荐

  1. 【Unity3D技巧】在Unity中使用事件/委托机制(event/delegate)进行GameObject之间的通信 (二) : 引入中间层NotificationCenter

    作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点[推荐].谢谢! 一对多的观察者模式机制有什么缺点? 想要查看 ...

  2. 在多浏览器使用JS复制内容到剪切板,无需插件

    最近在学习DHTMLX,下载了一些JS源码,使用谷歌浏览器,在学习dhtmlxGrid部分进行复制表格内容时,发现,在线版的可以复制成功,而本地的不可以复制,报类似访问剪切板错误,经查找原因,原来是谷 ...

  3. Application.CommonAppDataPath的路径

    Application.CommonAppDataPath; win7的路径 C:\ProgramData\CompanyName\ProductName\2.0.5.1 [assembly: Ass ...

  4. Hadoop家族学习路线图

    主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, Chukwa,新增加的项 ...

  5. 原生JS与jQuery操作DOM对比

    一.创建元素节点 1.1 原生JS创建元素节点 document.createElement("p"); 1.2 jQuery创建元素节点 $('<p></p&g ...

  6. Confluence 6 导入 Active Directory 服务器证书 - Windows

    为了让你的应用服务器能够信任你的目录服务器.你目录服务器上导出的证书需要导入到你应用服务器的 Java 运行环境中.JDK 存储了信任的证书,这个存储信任证书的文件称为一个 keystore.默认的 ...

  7. [ACM_暴力] 最多交换k个数的顺序,求a[i]的最大连续和

    /* http://codeforces.com/contest/426/problem/C 最多交换k个数的顺序,求a[i]的最大连续和 爆解 思路:Lets backtrack interval ...

  8. Selenium_Page Object设计模式

    Page Object 介绍 Page Object设计模式的优点如下: 减少代码的重复 提高测试用例的可读性 提高测试用例的可维护性,特别是针对UI频繁变化的项目 当Web页面编写测试时,需要操作该 ...

  9. HDU 4667 Building Fence(2013多校7 1002题 计算几何,凸包,圆和三角形)

    Building Fence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)To ...

  10. 适配高分辨率的图片High DPI Images for Variable Pixel Densities

    用最高的效率与性能提供最好的图片质量. 本文内容来至http://www.html5rocks.com/en/mobile/high-dpi/.是在这篇文章的翻译的基础上进行了总结和说明. 眼下面临的 ...