1.CSV
encoding/csv 包提供对 csv 文件读写的操作
a) 常用结构体
⚫ Reader
常用函数
➢ NewReader
常用方法
➢ Read
➢ ReadAll
⚫ Writer
常用函数
➢ NewWriter
常用方法
➢ Write
➢ WriteAll
➢ Flush
(1)Csvreader
package main
import (
"encoding/csv"
"fmt"
"io"
"os"
)
func main() {
file,err := os.Open("user.csv")
if err == nil {
defer file.Close()
//这里也可以用带缓冲的
reader := csv.NewReader(file)
for {
line,err := reader.Read()
if err != nil {
if err != io.EOF{
fmt.Println(err)
}
break
}else {
fmt.Println(line)
}
}
}
}
(2)Csvwriter
package main
import (
"encoding/csv"
"os"
)
func main() {
file ,err:= os.Create("user.csv")
if err != nil {
}else if err == nil {
defer file.Close()
writer := csv.NewWriter(file)
writer.Write([]string{"ID","Age","Name"})
writer.Write([]string{"1","24","c"})
writer.Flush()
}
}
2.GOB
encoding/gob 包提供了对数据结构进行二进制序列化的功能
a) 常用函数
⚫ Register:注册 gob 编解码记录值
⚫ RegisterName:注册 gob 编解码记录值,并指定名称
b) 常用结构体
⚫ Encoder
常用函数
➢ NewEncoder: 创建编码器
常用方法
➢ Encode:将对象进行编码到流对象中
⚫ Decoder
常用函数
➢ NewDecoder:创建解码器
常用方法
➢ Decode:将流对象中的数据编码到对象中
(1)Gobdecode
package main
import (
"encoding/gob"
"fmt"
"os"
)
type User struct {
ID int
Name string
}
func main() {
//把文件中的数据放在内存中
users := map[int]User{}
file,err := os.Open("user.gob")
if err == nil {
defer file.Close()
decoder := gob.NewDecoder(file)
decoder.Decode(&users)
fmt.Println(users)
}
}
(2)Gobencode
package main
import (
"encoding/gob"
"os"
)
type User struct {
ID int
Name string
}
func main() {
users := map[int]User{
1:{1,"AA"},
2:{2,"BB"},
3:{3,"CC"},
}
//把内存中的数据存在文件中
file,err := os.Create("user.gob")
if err == nil {
defer file.Close()
encoder := gob.NewEncoder(file)
encoder.Encode(users)
}
}