<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
對於不同的基礎型別之間的轉化,Go 提供了 strconv包。它實現了字串與其他基本資料型別之間的轉化。
其中最常用的數值轉化函數是Atoi和ltoa
Atoi 方法可以將字串型別的數值直接轉化為int型別的數值,而 ltoa 可以將 int 型別的數值轉化為string型別的值。
範例:控制檯輸入一個數值,進行資料大小的比較
package main import ( "fmt" "strconv" ) func main() { var number string fmt.Println("請輸入一個整數:") //控制檯輸入,&指定一個地址 fmt.Scan(&number) fmt.Println("數值是: ", number) fmt.Printf("資料型別是:%T", number) //資料型別轉換string——》int //空白識別符號接受err數值 value, _ := strconv.Atoi(number) //數值判斷 fmt.Printf("轉換後的資料型別是: %Tn", value) if value > 100 { fmt.Println("數值較大") } else { fmt.Println("數值較小") } }
go語言中的亂數應該說是偽隨機
math/rand 包實現了偽亂數生成器
在go語言中亂數需要設定種子,如果不設定種子,亂數每次執行的結果相同
預設種子是1,且相同種子產生的亂數是相同的
為了保證種子不是固定的,使用time這個包來調取當前時間,採用當前時間的納秒作為種子來生成亂數
範例
package main import ( "fmt" "math/rand" "time" ) func main() { rand.Seed(time.Now().Unix()) for i := 0; i < 10; i++ { value := rand.Intn(10)//Intn(10) 左閉右開區間 [0,10) fmt.Println(value) } }
執行結果如下
0
4
4
4
5
8
9
4
4
7
這裡有二個,不能選錯
//猜商品價格,商品高低,商品價格隨機生成[0-300) //如果你輸入的價格大於商品價格則提示價格過高 //如果你輸入的價格低於商品價格提示價格過低,直到猜中商品價格為止,並統計猜的次數 package main import ( "fmt" "math/rand" "time" ) func main() { var ( price int 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("恭喜你猜對價格,價格為:", real_price) goto TAG case price > real_price: count++ fmt.Println("價格過高,請重新輸入!") continue default: count++ fmt.Println("價格過低,請重新輸入!") continue } } TAG: fmt.Println("總共猜的次數為:", count) } //終端互動結果如下 PS D:goprojectsrcdev_codetest01example4main> go run .main.go 請輸入價格: 100 價格過低,請重新輸入! 請輸入價格: 200 價格過低,請重新輸入! 請輸入價格: 280 價格過高,請重新輸入! 請輸入價格: 270 價格過高,請重新輸入! 請輸入價格: 260 價格過高,請重新輸入! 請輸入價格: 250 價格過高,請重新輸入! 請輸入價格: 240 價格過低,請重新輸入! 請輸入價格: 245 價格過高,請重新輸入! 請輸入價格: 243 價格過高,請重新輸入! 請輸入價格: 242 恭喜你猜對價格,價格為: 242 總共猜的次數為: 10 --------------------------------------------------------------------------------------------- //方法二 package main import ( "fmt" "math/rand" "time" ) func main() { var ( price int count int ) rand.Seed(time.Now().Unix()) real_price := rand.Intn(300) for { fmt.Println("請輸入價格:") fmt.Scan(&price) if price == real_price { count++ fmt.Println("恭喜猜對價格!商品的價格為:", real_price) break } if price > real_price { count++ fmt.Println("價格過高,請重新輸入!") } else { count++ fmt.Println("價格過低,請重新輸入!") continue } } fmt.Println("總共猜了:", count, "次!") } //輸出結果 請輸入價格: 100 價格過低,請重新輸入! 請輸入價格: 500 價格過高,請重新輸入! 請輸入價格: 400 價格過高,請重新輸入! 請輸入價格: 300 價格過高,請重新輸入! 請輸入價格: 200 價格過高,請重新輸入! 請輸入價格: 150 價格過高,請重新輸入! 請輸入價格: 140 價格過高,請重新輸入! 請輸入價格: 130 價格過高,請重新輸入! 請輸入價格: 122 價格過低,請重新輸入! 請輸入價格: 126 價格過低,請重新輸入! 請輸入價格: 128 恭喜猜對價格!商品的價格為: 128 總共猜了: 11 次!
大致流程如下
使用者往程式控制臺進行輸入,當出現高並行讀寫的時候,所以的執行緒不一定能處理過來,這時候就把請求收納到緩衝區中;
使用bufio.NewReader(os.Stdin)可以建立緩衝區,並把資料從控制檯拿到緩衝區);
使用ReadLine()方式把資料從緩衝區拿到程式中,判斷資料中的是否存在報錯,有錯誤交給Err()處理並輸出報錯資訊,而正確的字串則提取出來給程式去使用。
範例:
package main import ( "bufio" "fmt" "os" ) func main() { fmt.Println("請輸入內容:") str1 := getInput() fmt.Println(str1) } //緩衝區控制檯寫入 func getInput() string { //bufio 緩衝區從控制檯中讀取輸入的資訊,緩衝區名為in in := bufio.NewReader(os.Stdin) //從緩衝區讀取字串資訊 str, _, err := in.ReadLine() if err != nil { return err.Error() } return string(str) }
終端輸出結果如下
請輸入內容:
hello
hello
範例
使用Scan()相比於上面的方法,可以自定義報錯資訊,程式碼更簡潔方便
package main import ( "bufio" "fmt" "os" ) func main() { fmt.Println("請輸入內容:") str1 := getInputByScanner() fmt.Println(str1) } func getInputByScanner() string { var str string //使用os.Stdin開始輸入流 in := bufio.NewScanner(os.Stdin) if in.Scan() { str = in.Text() } else { str = "Find input error" } return str }
結果如下
請輸入內容:
hello
hello
到此這篇關於Go語言實現控制檯輸入&生成亂數詳解的文章就介紹到這了,更多相關Go語言輸入生成亂數內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45