Q1mi / BlogComments

9 stars 0 forks source link

Go语言基础之接口 | 李文周的博客 #146

Open Q1mi opened 2 years ago

Q1mi commented 2 years ago

https://www.liwenzhou.com/posts/Go/12-interface/

李文周的Blog Go语言接口 interface 面向接口编程

Luozongwei commented 2 years ago
package main

import (
    "fmt"
    "os"
    "time"
)

// 接口
type Logger interface {
    consoleLog()  // 终端
    fileLog()     // 文件
}

// 用户结构体
type User struct {
    username string
    password string
}

// User实现方法
func (u User) consoleLog() {
    t := time.Now()
    fmt.Printf("用户创建成功!用户名为:%s", u.username)
    fmt.Printf("用户密码是:%s\n", u.password)
    fmt.Printf("创建完成时间:%d-%d-%d %d:%d:%d\n", t.Year(), t.Month(), t.Day(),
        t.Hour(), t.Minute(), t.Second())
}

func (u User) fileLog() {
    t := time.Now()
    file, err := os.OpenFile("./"+u.username+".txt", os.O_RDWR|os.O_CREATE, 0766)
    if err != nil {
        fmt.Println(err)
    }
    data := "用户创建成功! 用户名为:" + fmt.Sprintf("%s\n", u.username) + "密码是:" + u.password + "\n" + fmt.Sprintf("创建完成时间:%d-%d-%d %d:%d:%d\n", t.Year(),
        t.Month(), t.Day(), t.Hour(), t.Minute(), t.Second())
    _, _ = file.WriteString(data)
    _ = file.Close()
}

// User中的字段初始化
func newUser(username, password string) User {
    return User{
        username: username,
        password: password,
    }
}

// 创建用户对象
func createUser() {
    var (
        username string
        password string
    )
    fmt.Print("请输入用户名:")
    _, err := fmt.Scan(&username)
    fmt.Print("请输入一个密码:")
    _, err = fmt.Scan(&password)
    if err != nil {
        fmt.Println("输入错误!!ERROR:", err)
    }
    u := newUser(username, password)
    u.consoleLog()
    u.fileLog()
}

// 主函数
func main() {
    createUser()
}

生成的文件是放在根目录下的也就是$GOPATH/src 目录下的