在 Golang 中,如果需要将 结构体 写入 文件,那么我们可以先将结构体进行编码之后 写入文件,然后再 读出文件 的内容,最后,再对读出的内容进行解码出结构体。
使用 json.Marshal 编码结构体,再使用 json.Unmarshal 解码结构体
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
)
type Student struct {
Name string
Age int
Score float64
}
func main() {
fmt.Println("嗨客网(www.haicoder.net)")
var(
fileName = "C:/haicoder.txt"
)
stu := Student{
Name:"HaiCoder",
Age:109,
Score:100.5,
}
fileContent, err := json.Marshal(stu)
if err = ioutil.WriteFile(fileName, fileContent, 0666); err != nil{
fmt.Println("Writefile Error =", err)
return
}
//读取文件
fileContent, err = ioutil.ReadFile(fileName)
if err != nil{
fmt.Println("Read file err =", err)
return
}
var stuRes Student
if err := json.Unmarshal(fileContent, &stuRes); err != nil{
fmt.Println("Read file error =", err)
}else{
fmt.Println("Read file success =", stuRes)
}
}
程序运行后,控制台输出如下:
我们首先定义了一个 Student 结构体,接着,定义了一个 Student 结构体的实例 stu,并使用 json.Marshal 将结构体编码为 字节 数组。
接着,我们使用 ioutil.ReadFile 读出文件内容,并使用 json.Unmarshal 解码读出的文件内容,我们发现,我们能够成功的将写入的结构体读取出来。