将文本文件放入切片然后比较
我正在编写一个程序,在 .txt 文件中逐行获取用户名,并验证用户名是否在其中。然后,我创建了一个切片并将文件转换为字符串并将其附加到字符串切片中。我现在尝试使用 for 循环遍历切片,以查找文件中的用户名,并将其与包含该用户名的另一个字符串变量进行比较。我想检查一下它是否在切片中。做这个的最好方式是什么?我尝试使用切片的 for 循环将范围内的元素与我想要检查的用户名的变量进行比较,但它不起作用。因此,换句话说,我想找出获取一个 txt 文件的最佳方法,该文件包含从上到下添加的用户名列表,让我的程序从该文本文件中读取(循环),并将其与将字符串变量中的预定项(用户名)与文本文件中的内容进行比较,并确定其是否匹配。
用户名(字符串变量)==用户名(文本文件中)
*用户名变量也将基于程序用户输入的内容。因此,我试图最终检查当用户输入用户名时程序是否会验证它是否在文件中。谢谢。
我尝试过的代码示例:
var readSystemCtl []string readSystemCtl = append(readSystemCtl, string(file)) for _, username := range of readSystemCtl { if username == input { //Continue program if true break }else { //Do something else } }
注意: string(file) 是我要读取的文本文件; input 是用户为其用户名输入的字符串变量,该用户名是在程序中预先确定的。
正确答案
作为一名 go 程序员,我很快将您的整体应用需求翻译成了 go 程序。然后我将其与您的代码进行了比较。我不明白为什么你使用 go 切片的线性搜索。为什么不使用随机访问 go 地图?
在比较用户名是否相等之前,请修剪空格 (strings.trimspace
),并且为了不区分大小写,将其转换为小写 (strings.tolower
)。
users.go
package main import ( "bufio" "fmt" "io" "os" "strings" ) func loadusers(r io.reader) (map[string]bool, error) { users := make(map[string]bool) scnr := bufio.newscanner(r) for scnr.scan() { user := strings.trimspace(scnr.text()) if len(user) > 0 { user = strings.tolower(user) users[user] = true } } if err := scnr.err(); err != nil { return nil, err } return users, nil } func loadusersfile(name string) (map[string]bool, error) { f, err := os.open(name) if err != nil { return nil, err } defer f.close() users, err := loadusers(f) if err != nil { return nil, err } return users, nil } func isuser(users map[string]bool, user string) bool { user = strings.trimspace(user) user = strings.tolower(user) return users[user] } func main() { users, err := loadusersfile("users.txt") if err != nil { fmt.fprintln(os.stderr, err) os.exit(1) } scnr := bufio.newscanner(os.stdin) for scnr.scan() { user := scnr.text() fmt.print("user: ", user) if isuser(users, user) { fmt.println(" found") } else { fmt.println(" not found") } } if err := scnr.err(); err != nil { fmt.fprintln(os.stderr, err) os.exit(1) } }
$ cat users.txt username1 Username2 UserName3 $ go build users.go $ ./users User Name X User: User Name X not found username3 User: username3 found $
以上是将文本文件放入切片然后比较的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

OpenSSL,作为广泛应用于安全通信的开源库,提供了加密算法、密钥和证书管理等功能。然而,其历史版本中存在一些已知安全漏洞,其中一些危害极大。本文将重点介绍Debian系统中OpenSSL的常见漏洞及应对措施。DebianOpenSSL已知漏洞:OpenSSL曾出现过多个严重漏洞,例如:心脏出血漏洞(CVE-2014-0160):该漏洞影响OpenSSL1.0.1至1.0.1f以及1.0.2至1.0.2beta版本。攻击者可利用此漏洞未经授权读取服务器上的敏感信息,包括加密密钥等。

本文演示了创建模拟和存根进行单元测试。 它强调使用接口,提供模拟实现的示例,并讨论最佳实践,例如保持模拟集中并使用断言库。 文章

本文探讨了GO的仿制药自定义类型约束。 它详细介绍了界面如何定义通用功能的最低类型要求,从而改善了类型的安全性和代码可重复使用性。 本文还讨论了局限性和最佳实践

本文讨论了GO的反思软件包,用于运行时操作代码,对序列化,通用编程等有益。它警告性能成本,例如较慢的执行和更高的内存使用,建议明智的使用和最佳

本文讨论了GO中使用表驱动的测试,该方法使用测试用例表来测试具有多个输入和结果的功能。它突出了诸如提高的可读性,降低重复,可伸缩性,一致性和A

本文使用跟踪工具探讨了GO应用程序执行流。 它讨论了手册和自动仪器技术,比较诸如Jaeger,Zipkin和Opentelemetry之类的工具,并突出显示有效的数据可视化
