var reader = bufio.NewReader(os.Stdin) // GetUserCredentials 获取用户输入的账号密码 func GetUserCredentials() (string, string) { var username, password string fmt.Print("请输入用户名:") userInput, _ := reader.ReadString('\n') username = strings.TrimSpace(userInput) fmt.Print("请输入密码:") passwordInput, _ := reader.ReadString('\n') password = strings.TrimSpace(passwordInput) return strings.TrimSpace(username), strings.TrimSpace(password) } // MD5Hash 对密码进行 MD5 加密 func MD5Hash(password string) string { hash := md5.Sum([]byte(password)) return hex.EncodeToString(hash[:]) } // UserLogin 处理用户登录 func UserLogin(username, password string) bool { // 假设存储的用户名和密码都已经进行了 MD5 加密 if username == "admin" && password == "21232f297a57a5a743894a0e4a801fc3" { return true } return false } func main() { username, password := GetUserCredentials() if UserLogin(username, password) { fmt.Println("登录成功") // 用户登录成功,继续执行其他逻辑 } else { fmt.Println("用户名或密码错误") // 用户登录失败,进行错误处理 } }
时间: 2024-04-09 08:31:01 浏览: 80
这段代码是一个简单的用户登录功能,主要包括获取用户输入的账号密码、对密码进行MD5加密、以及处理用户登录的逻辑。
在`GetUserCredentials`函数中,通过`bufio.NewReader(os.Stdin)`创建一个读取器,然后使用`reader.ReadString('\n')`逐行读取用户输入的账号密码,并通过`strings.TrimSpace`去除输入中的空格和换行符,最后返回账号和密码。
在`MD5Hash`函数中,使用`md5.Sum`对密码进行MD5加密,然后使用`hex.EncodeToString`将加密后的结果转换为字符串,并返回。
在`UserLogin`函数中,假设用户名为"admin",密码为"21232f297a57a5a743894a0e4a801fc3",这里的密码已经经过MD5加密。函数会将输入的用户名和密码与预设的用户名和密码进行比较,如果匹配则返回`true`,否则返回`false`。
在`main`函数中,首先调用`GetUserCredentials`获取用户输入的账号密码,然后通过调用`UserLogin`函数进行登录验证。如果登录成功,则输出"登录成功",否则输出"用户名或密码错误"。
请注意,这段代码只是一个示例,并没有涉及真实的用户验证和安全性措施,请勿直接使用于实际产品中。
相关问题
用go 语言实现查找并删除指定字符串 给定一个短字符串(不含空格),再给定若干字符串,在这些字符串中删除所含有的短字符串。 输入格式: 先输入一个指定将被删除的字符串,再输入一串将被删除指定字符串的长字符串。 输出格式: 删除长字符串中所有包含指定短字符串的剩余部分 输入样例: 请输入一串长字符串: This is a test. This is only a test. 请输入指定将被删除的字符串: is 输出样例: 过滤后的字符串: Th a test. Th only a test.
好的,以下是用 Go 实现查找并删除指定字符串的代码。
提示:Go 语言中字符串是不可变的,因此需要将字符串转换为字节数组(byte slice)后才能进行修改。最后再将字节数组转换回字符串。
```go
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
func main() {
reader := bufio.NewReader(os.Stdin)
fmt.Print("请输入一串长字符串: ")
longStr, _ := reader.ReadString('\n')
longStr = strings.TrimSpace(longStr)
fmt.Print("请输入指定将被删除的字符串: ")
shortStr, _ := reader.ReadString('\n')
shortStr = strings.TrimSpace(shortStr)
words := strings.Split(longStr, " ")
var filteredWords []string
for _, word := range words {
if strings.Contains(word, shortStr) {
word = strings.Replace(word, shortStr, "", -1)
}
filteredWords = append(filteredWords, word)
}
filteredStr := strings.Join(filteredWords, " ")
fmt.Println("过滤后的字符串:", filteredStr)
}
```
输入样例:
```
请输入一串长字符串: This is a test. This is only a test.
请输入指定将被删除的字符串: is
```
输出样例:
```
过滤后的字符串: Th a test. Th only a test.
```
编写一个go语言程序,要求用户输入一段文本,程序统计每个单词出现的频率并按照频率排序输出
在Go语言中,你可以使用`bufio`包处理用户的输入,并结合`strings`和`map`数据结构来统计单词频率。下面是一个简单的示例程序,它会读取用户输入的文本,分割单词并计算每个单词的出现次数:
```go
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
func main() {
reader := bufio.NewReader(os.Stdin)
fmt.Print("请输入文本: ")
text, _ := reader.ReadString('\n') // Read until newline
text = strings.TrimSpace(text) // Remove leading/trailing whitespace
wordCount := make(map[string]int)
splitWords := strings.Fields(text) // Split the text into words
for _, word := range splitWords {
wordCount[word]++ // Increment count for each word
}
// Sort words by frequency in descending order
type kv struct{ Key string; Value int }
var sorted []kv
for k, v := range wordCount {
sorted = append(sorted, kv{k, v})
}
sort.Slice(sorted, func(i, j int) bool { return sorted[i].Value > sorted[j].Value })
// Output the result
fmt.Println("单词按频率排序:")
for _, kv := range sorted {
fmt.Printf("%s: %d\n", kv.Key, kv.Value)
}
}
```
当你运行这个程序,输入一段文本,然后它将打印出各个单词及其出现的频率,按照频率从高到低排序。
阅读全文