当前位置:网站首页>go图书管理系统
go图书管理系统
2022-07-31 15:53:00 【漫漫行程路】
Go图书管理系统1.0
package main
import "fmt"
/* 使用函数实现一个简单的图书管理系统,每本书有书名作者,价格,上架信息 用户可以在控制台添加书籍,修改书籍信息,打印所有书籍列表 书:书名,作者,价格,上架信息 添加书籍 修改书籍 打印所有书籍 */
func bookmenu() {
fmt.Println("********************")
fmt.Println("1. add book")
fmt.Println("2. update book")
fmt.Println("3. show book")
fmt.Println("0. exit")
fmt.Println("********************")
}
func addbook() []string {
var bookname string
var author string
var price string
var data string
fmt.Println("please input bookname:")
fmt.Scanln(&bookname)
fmt.Println("please input author:")
fmt.Scanln(&author)
fmt.Println("please input price:")
fmt.Scanln(&price)
fmt.Println("please input data:")
fmt.Scanln(&data)
books_temp := [...]string{
bookname, author, price, data}
fmt.Println("add success", books_temp)
return books_temp[:]
}
func updatebook(booklist [][]string) {
fmt.Println(booklist)
for key, value := range booklist {
fmt.Println(key, value)
}
var inputnum int
var bookvaluenum int
var bookvalue string
fmt.Println("please input update num:")
fmt.Scanln(&inputnum)
fmt.Println("please input update book value num:")
fmt.Scanln(&bookvaluenum)
fmt.Println("please input update book value:")
fmt.Scanln(&bookvalue)
booklist[inputnum][bookvaluenum] = bookvalue
fmt.Println(booklist)
}
func main() {
book_list := [][]string{
}
// books_temp := []string{"go", "shuai", "58.8", "20220620"}
var num_input int
for {
bookmenu()
fmt.Println("please input num:")
fmt.Scanln(&num_input)
if num_input == 1 {
fmt.Println(1)
books_temp := addbook()
book_list = append(book_list, books_temp)
fmt.Println(book_list)
}
if num_input == 2 {
fmt.Println(3)
updatebook(book_list)
}
if num_input == 3 {
fmt.Println(3)
fmt.Println("all books :", book_list)
}
if num_input == 0 {
fmt.Println(0)
break
}
}
}
踩到的坑
scanf
刚开始输入的时候直接就是这样fmt.Scanf("please input bookname:%s", &bookname)
,然后很好奇为什么不能输入
查看源码
func Scanf(format string, a ...any) (n int, err error) {
return Fscanf(os.Stdin, format, a...)
}
发现是没问题的,但是我需要一行一行输入,所以放弃scanf
接着查看fmt.Scanln("%s",&bookname)
func Scanln(a ...any) (n int, err error) {
return Fscanln(os.Stdin, a...)
}
好家伙,原来前面不需要说明,嗯。搞定。
修改完毕,发现能输入了。所以在刚开始写go的时候,最好先写个小demo测试一下是否可行。
边栏推荐
猜你喜欢
Implementing distributed locks based on Redis (SETNX), case: Solving oversold orders under high concurrency
Graham‘s Scan法求解凸包问题
Qt实战案例(54)——利用QPixmap设计图片透明度
mongo enters error
外媒所言非虚,苹果降价或许是真的在清库存
The use of border controls
Foreign media right, apple on May be true in inventory
How to switch remote server in gerrit
The 2nd China PWA Developer Day
01 邂逅typescript,环境搭建
随机推荐
Use of radiobutton
leetcode303 Weekly Match Replay
After Grafana is installed, the web opens and reports an error
[7.28] Code Source - [Fence Painting] [Appropriate Pairs (Data Enhanced Version)]
gerrit中如何切换远程服务器
WPF项目--控件入门基础用法,必知必会XAML
定时器的类型
对话庄表伟:开源第一课
数据库的范式(第一范式,第二范式,第三范式,BCNF范式)「建议收藏」
Premiere Pro 2022 for (pr 2022)v22.5.0
软件实现AT命令操作过程
what exactly is json (c# json)
Implement anti-shake and throttling functions
【7.29】Code Source - 【Arrangement】【Stone Game II】【Cow and Snacks】【Minimum Number of Spawns】【Sequence】
tensorflow2.0 cnn(layerwise)
type of timer
7、常见面试口语提问问题汇总
全新宝马3系上市,安全、舒适一个不落
ASP.NET Core 产生连续 Guid
TextBlock控件入门基础工具使用用法,取上法入门