Go 控制台输入
package main import ( "fmt" "math/rand" ) /*指定范围生成随机数*/ func main() { for i := 0; i < 10; i++ { // 生成 10 次 a := rand.Intn(1000) // 左闭右开 fmt.Println(a) } }
猜测商品价格,商品价格随机生成
- rand.Intn(n)
生成从 [0,n) 的随机数,不加随机种子,每次遍历获取都是重复的一些随机数据(伪随机数)。
- rand.Seed(time.Now().UnixNano()) //rand.Seed(time.Now().Unix())
设置随机数种子,加上这行代码,可以保证每次随机都是随机的。
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
var price int
sum := 0
// 生成商品价格
rand.Seed(time.Now().Unix())
value := rand.Intn(100) // 随机数生成范围 [0,100)
fmt.Println("商品价格为:",value)
// 判断循环,switch { case ...} 语句也可以
for true { // 死循环,猜测不到一直运行,不想死循环可以 for i:=0;i<=n;i++ {}
fmt.Println("请输入猜测价格:")
fmt.Scan(&price)
if price > value {
fmt.Println("价格过高")
sum++
continue
} else if price < value {
fmt.Println("价格过低")
sum++
continue
} else if price == value {
fmt.Println("价格正确")
sum++
break
} else {
fmt.Println("格式错误")
sum ++
continue
}
}
fmt.Printf("猜测次数为 %v",sum)
}
package main import ( "fmt" "math/rand" "time" ) func main() { var price,count int rand.Seed(time.Now().Unix()) real_price := rand.Intn(300) for { fmt.Println("请输入商品价格:") fmt.Scan(&price) switch { case price == real_price: count++ fmt.Println("价格正确") goto end case price > real_price: count++ fmt.Println("价格过高") continue default: count++ fmt.Println("价格过低") continue } } end: fmt.Println("猜测次数:",count) }
将循环判断封装成函数
package main import ( "fmt" "math/rand" "time" ) var ( price int count int ) func main() { b := test() fmt.Println("总共猜中的次数:", b) } func test() int { //生成商品的价格 rand.Seed(time.Now().Unix()) real_price := rand.Intn(300) for { //输入价格 fmt.Println("请输入商品价格:") fmt.Scan(&price) switch { case price == real_price: count++ fmt.Println("恭喜猜中了商品价格:", real_price) return count // return 是函数的出口,return 返回 count 的值给 int,int 传给 b case price > real_price: count++ fmt.Println("猜得价格过高") continue default: count++ fmt.Println("猜得价格过低") continue } } }
---------------------------------------------------------------------------------------------------------------------------------------
package main import ( "bufio" "fmt" "os" ) func main() { fmt.Println("请输入内容:") str1 := getInput() fmt.Println(str1) } // bufio 建立缓冲区,os.Stdin 确定输入位置 func getInput() string { // 使用 os.Stdin 开启输入流 // NewReader 创建一个默认大小缓冲区 in := bufio.NewReader(os.Stdin) // in.ReadLine 函数具有三个返回值 []byte bool error // 分别为读取到的信息,是否数据太长导致缓冲区溢出,是否读取失败 str,_,err := in.ReadLine() if err != nil { return err.Error() } return string(str) }
package main import ( "bufio" "fmt" "os" ) func main() { fmt.Println("请输入内容:") str1 := getStrInput() fmt.Println(str1) } func getStrInput() string { var str string // 创建 bufio 缓冲区,利用 NewScanner 加载控制台输入 in := bufio.NewScanner(os.Stdin) if in.Scan() { str = in.Text() } else { str = "not found" } return str }