تمرين إعادة البناء
Todo List JSON
أعد كتابة برنامج Go يحفظ قائمة مهام بصيغة JSON.
go
~16 دقيقة
مبتدئ
أعد بناء الكود
Rebuild
هذا هو الكود. اكتبه بنفسك.
الكود المرجعي
package main
import (
"encoding/json"
"fmt"
"os"
)
type Todo struct {
ID int `json:"id"`
Text string `json:"text"`
Done bool `json:"done"`
}
func saveTodos(path string, todos []Todo) error {
data, err := json.MarshalIndent(todos, "", " ")
if err != nil {
return err
}
return os.WriteFile(path, data, 0o644)
}
func loadTodos(path string) ([]Todo, error) {
data, err := os.ReadFile(path)
if err != nil {
return nil, err
}
var todos []Todo
err = json.Unmarshal(data, &todos)
return todos, err
}
func main() {
path := "todos.json"
todos := []Todo{
{ID: 1, Text: "write a small Go program", Done: true},
{ID: 2, Text: "run it from the terminal", Done: false},
}
if err := saveTodos(path, todos); err != nil {
fmt.Println("error:", err)
return
}
defer os.Remove(path)
loaded, err := loadTodos(path)
if err != nil {
fmt.Println("error:", err)
return
}
for _, todo := range loaded {
fmt.Printf("#%d done=%t %s\n", todo.ID, todo.Done, todo.Text)
}
}اكتب هنا