K&

面向对象编程对我来说最直观的就是,就是创建了一个对象,这个对象能调用各种以它为基础创建的各类方法

 

Newfile就是对象不过我只定义了一部分参数,文件名字让我拿出去单独使用了。

package util

import (
    "fmt"
    "os"
)

type file_name struct {
    filename string
    key      int
    loop     bool
}

func Newfile() *file_name {
    return &file_name{
        key:  0,
        loop: true,
    }
}

func (f *file_name) isExitsfile() {
    
    _, err := os.Stat(f.filename)
    if err == nil {
        fmt.Println("文件存在")
    }
    //如果文件err为空则表示文件存在
    if os.IsExist(err) {
        fmt.Println("文件不存在")
    }
}

func (f *file_name) createfile() {
    fmt.Scanln(&f.filename)
    file, err := os.Create(f.filename)
    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Println(f.filename, "已经创建")
        file.Close()
    }
}

func (f *file_name) deletefile() {
    fmt.Scanln(&f.filename)
    err := os.Remove(f.filename)
    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Println("删除成功")
    }
}

func (f *file_name) exit() {
    fmt.Println("y|n")
    choice := ""
    for {
        fmt.Scanln(&choice)
        if choice == "y" || choice == "n" {
            break
        }
    }
    if choice == "y" {
        f.loop = false
    }
}

func (f *file_name) Mainmenu() {
    for {
    start:
        fmt.Print("########################################\n", "1.创建文件\n", "2.检查文件是否存在\n", "3.删除文件\n", "4.返回\n", "5.退出\n", "########################################\n")
        fmt.Print("请输入选项:")
        fmt.Scanln(&f.key)
        switch f.key {
        case 1:
            f.createfile()
        case 2:
            f.isExitsfile()
        case 3:
            f.deletefile()
        case 4:
            goto start
        case 5:
            f.exit()
        default:
            fmt.Println("输入错误")
        }
        if !f.loop {
            break
        }
    }
}

 

package main

import (
    "util"
)

func main() {
    util.Newfile().Mainmenu()
}

 

posted on 2021-11-05 17:12  K&  阅读(62)  评论(0编辑  收藏  举报