一、终端读写

操作终端相关文件语句常量,go所有的都是接口

os.Stdin:标准输入

os.Stdout:标准输入,只要实现输出这个接口,打印到终端,

os.Stderr:标准错误输出

os.OpenFile(“路径”,模式):打开文件

终端读写实例

package main

import(

“fmt”

)

var (

firstName,lastName,s string

I               int

f               float32

input           =”56.12/5212/GO”

format          =”%f /%d/%s”

)

func main(){

fmt.Println(“please enter your full name”)   //打印一行的输出

fmt.Scanln(&firstName,&lastName)           //只能输入字符串

//fmt.Scanf(input,format,&f,&I,&s)            //格式化输入

fmt.Printf()                               //格式化输出

fmt.Sscanf(input,format,&f,&I,&s)            //从一个字符串中格式化输入

fmt.Println(“from the we read ”,f,I,s)

}

带缓冲区的读写    从终端去读取数据

首先写道缓冲区里面,然后go或者系统再刷到文件里面,用于提高性能

下面是带缓冲区的读的代码  

小结:

1)用bufio.NewReader创建一个新的Reader,返回值默认大小的Reader,也就是创建缓冲区然后把文件读入缓冲区

2)然后根据上面的返回值进行Read。。。方法读取,返回错误和读出的数据

3)进行err判断

文件读写

open:返回一个文件用于读取数据

OpenFile:如果需要读写 操作用这个

练习:从文件中读取一行字符串,统计英文、数字、空格以及其他字符的数量

读取到文件末尾会返回io.EOF这个错误

  

1、os.File封装所有文件相关操作,之间的os.Stdin,os.Stdout,os.Stderr都是*os.File(结构体)

a)打开一个文件进行读操作  os.Open(name string)(*File,error)  //第一个括号是全路径,返回file

b)关闭一个文件:File.Close()

如果不关闭的话,linux最大为65535个文件句柄,如果超过最大数的话,那么以后再打的时候就一直是失败的

io/ioutil这个文件包可以一下把文件全部读取出来,读取到缓冲区里面

bufio这个包是一行一行把文件读取到缓冲区里面

读取整个文件实例

读取压缩文件

gzip.NewReader()参数接受一个文件句柄,读一部分文件数据解压缩,返回值是一个具有解压缩的功能

再把上面的具有解压缩的返回值放入到缓冲区里面,返回值为带缓冲区的解压缩功能

文件写入:

os.OpenFile(“output.dat”,os.O_WRONLY|os.O_CREATE,0666)

第一个参数是文件路径,第二个参数是模式

第二个参数

1.os.O_WRONLY:只写

2,os.O_CREATE: 创建文件

3.os.O_RDONLY:只读

4.os.O_RDWR,读写

5.os.O_TRUNC:清空

12 14

第三个参数:权限控制

r--à04

w--à02

x--à01

这里第三个三处分别是属主,数组,其他人

拷贝文件

源码简单,根据接口来实现

看copy源码

带缓冲区的读写

 

JSON数据协议

 

go如果和其他语言有交互,那么就需要序列化为json字符串,然后通过网络传输传递给程序,然后反序列化为其他语言

1)导入包:Import “encoding/json”

2)序列化:json.Marshal(data interface{})

3)反序列化:json.UnMarshal(data []byte,v interface{})

Json序列化结构体

  

testMap()的结果

testSlice()的结果

testSlice()的结果