亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

GO 編程語言中的標準 unicode

GO 編程語言中的標準 unicode

Go
牛魔王的故事 2022-10-17 15:55:42
我有一個字符串,其中包含通過 unicode 從紅桃 A 到紅桃 10 的卡片(該練習需要使用字符串,因此沒有數組或切片)給定一個數字 n,我必須從該字符串中提取 n 張卡片。如果使用 for-range 我得到的位數比我需要的少,我該怎么做?package mainimport (    "fmt"    "math/rand"    "strconv"    "strings"    "time")func main() {    var n int    var deck string    rand.Seed(int64(time.Now().Nanosecond()))    n = readNumber()    deck = deckGenerator()    drawCards(deck, n)}func readNumber() (n int) {    for n <= 0 || n >= 10 {        fmt.Print("Enter number between 1 and 9: ")        fmt.Scan(&n)    }    return n}func deckGenerator() (deck string) {    for i := 0; i < 10; i++ {        deck += strconv.Itoa('\U0001F0B1' + i)    }    return deck}func drawCards(deck string, n int) {    for i := 0; i < n; i++ {        cardPulledOut, deck2 := drawCard(deck)        fmt.Println("Pulled out the card", cardPulledOut, "- Cards left in the deck:", deck2)    }}func drawCard(deck string) (cardPulledOut rune, deck2 string) {    for true {        card := rune(('\U0001F0B1') + rand.Intn(10)) //random number between 0 and 9 inclusive        for _, v := range deck {            fmt.Println(v, card)            /*                output: (infinity loop)                ...                49 127156                53 127156                56 127156                ...            */            if v == card {                deck = strings.Replace(deck, string(card), "", 1)                return cardPulledOut, deck2            }        }    }    return}
查看完整描述

2 回答

?
冉冉說

TA貢獻1877條經驗 獲得超1個贊

您的人口函數有一個錯誤:


func deckGenerator() (deck string) {

    for i := 0; i < 10; i++ {

        // deck += strconv.Itoa('\U0001F0B1' + i) // converts integers to their string equivalent e.g. "127156"


        deck += string(rune('\U0001F0B1' + i))    // fix

    }

    return deck

}

https://go.dev/play/p/E3sVRZK4exh


查看完整回答
反對 回復 2022-10-17
?
嗶嗶one

TA貢獻1854條經驗 獲得超8個贊

需要的人的正確代碼:


package main


import (

    "fmt"

    "math/rand"

    "strings"

    "time"

)


func main() {

    var n int

    var deck string


    rand.Seed(int64(time.Now().Nanosecond()))


    n = readNumber()

    deck = deckGenerator()

    drawCards(deck, n)


}


func readNumber() (n int) {

    for n <= 0 || n >= 10 {

        fmt.Print("Enter number between 1 and 9: ")

        fmt.Scan(&n)

    }

    return n

}


func deckGenerator() (deck string) {

    for i := 0; i < 10; i++ {

        //deck += strconv.Itoa('\U0001F0B1' + i)

        deck += string(rune('\U0001F0B1' + i))

    }

    return deck

}


func drawCards(deck string, n int) {

    var cardPulledOut rune

    for i := 0; i < n; i++ {

        cardPulledOut, deck = drawCard(deck)

        fmt.Println("Pulled out the card", string(rune(cardPulledOut)), "- Cards left in the deck:", deck)

    }

}


func drawCard(deck string) (card rune, deck2 string) {

    for true {

        card = rune(('\U0001F0B1') + rand.Intn(10)) //random number between 0 and 9 inclusive


        for _, v := range deck {

            //fmt.Println(v, card)

            if v == card {

                deck2 = strings.Replace(deck, string(card), "", 1)

                return card, deck2

            }

        }

    }

    return

}


查看完整回答
反對 回復 2022-10-17
  • 2 回答
  • 0 關注
  • 142 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號