午夜无码人妻aⅴ大片色欲张津瑜,国产69久久久欧美黑人A片,色妺妺视频网,久久久久国产综合AV天堂

怎么使用scan方法實現(xiàn)控制臺輸入

這篇文章主要介紹了怎么使用scan方法實現(xiàn)控制臺輸入的相關知識,內(nèi)容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇怎么使用scan方法實現(xiàn)控制臺輸入文章都會有所收獲,下面我們一起來看看吧。

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:域名申請、網(wǎng)絡空間、營銷軟件、網(wǎng)站建設、正定網(wǎng)站維護、網(wǎng)站推廣。

基本語法

scan方法的基本語法如下:

func Scan(a ...interface{}) (n int, err error)

從輸入中讀取數(shù)據(jù),并將其存儲到指定的參數(shù)中。參數(shù)a表示需要讀取的數(shù)據(jù),可以傳遞任意個參數(shù),每個參數(shù)都是一個指針類型,用于存儲輸入的數(shù)據(jù)。返回值n表示成功讀取的參數(shù)個數(shù),返回值err表示可能出現(xiàn)的錯誤。

下面是一個簡單的例子,演示如何從控制臺中讀取兩個整數(shù):

func main() {
    var a, b int
    fmt.Print("請輸入兩個整數(shù):")
    n, err := fmt.Scan(&a, &b)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Printf("成功讀取了 %d 個參數(shù):%v\n", n, []int{a, b})
}

通過上面的代碼,我們可以看到Scan方法的基本用法。執(zhí)行上面的代碼,程序將提示用戶輸入兩個整數(shù),用戶輸入完成后,程序會將這兩個整數(shù)存儲到變量ab中,并輸出這兩個整數(shù)。

scan的特性

Scan方法有以下幾個特性:

1. 忽略空格

Scan方法在讀取數(shù)據(jù)時,會自動忽略掉數(shù)據(jù)之間的空格。如下面的代碼所示:

func main() {
    var a, b, c string
    fmt.Print("請輸入三個字符串:")
    n, err := fmt.Scan(&a, &b, &c)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Printf("成功讀取了 %d 個參數(shù):%v\n", n, []string{a, b, c})
}

輸入字符串hello world go,程序將自動忽略掉字符串之間的空格,并輸出這三個字符串。

2. 等待回車

Scan方法在讀取數(shù)據(jù)時,會等待用戶輸入回車符\n,表示輸入完成。如果用戶沒有輸入回車符,程序將一直等待用戶輸入。如下面的代碼所示:

func main() {
    var s string
    fmt.Print("請輸入一個字符串:")
    n, err := fmt.Scan(&s)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Printf("成功讀取了 %d 個參數(shù):%v\n", n, s)
}

輸入字符串hello后,程序并不會立即輸出結果,而是等待用戶輸入回車符\n,才會輸出結果。

3. 不會讀取換行符

Scan方法在讀取數(shù)據(jù)時,不會讀取輸入中的換行符\n。比如,當我們通過Scan方法讀取一個字符串時,輸入字符串中的換行符\n不會被讀取。如下面的代碼所示:

func main() {
    var s string
    fmt.Print("請輸入一個字符串:")
    n, err := fmt.Scan(&s)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Printf("成功讀取了 %d 個參數(shù):%v\n", n, s)
}

輸入字符串hello\nworld,程序只會讀取到字符串hello,不會讀取到字符串中的換行符\n。

深入分析

Scan方法的實現(xiàn)是基于fmt包的Scanf函數(shù)。Scanf方法有以下幾個特性:

1. 格式化輸入

Scanf方法支持格式化輸入。可以通過格式化字符串指定需要讀取的數(shù)據(jù)類型。比如,我們可以通過以下格式化字符串讀取一個整數(shù)和一個字符串:

func main() {
    var a int
    var b string
    fmt.Print("請輸入一個整數(shù)和一個字符串:")
    n, err := fmt.Scanf("%d %s", &a, &b)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Printf("成功讀取了 %d 個參數(shù):%v\n", n, []interface{}{a, b})
}

上面的代碼中,定義的格式化字符串"%d %s"表示先讀取一個整數(shù),再讀取一個字符串,中間用空格分隔。

2. 自定義分隔符

Scanf方法支持自定義分隔符。默認情況下,Scanf方法以空格作為分隔符。可以通過Scanf方法的ScanState參數(shù),自定義分隔符。如下面的代碼所示:

func main() {
    var a, b string
    fmt.Print("請輸入兩個字符串,用逗號分隔:")
    s := bufio.NewScanner(os.Stdin)
    s.Split(func(data []byte, atEOF bool) (adv int, token []byte, err error) {
        for i := 0; i < len(data); i++ {
            if data[i] == ',' {
                return i + 1, data[:i], nil
            }
        }
        return 0, data, bufio.ErrFinalToken
    })
    if s.Scan() {
        a = s.Text()
    }
    if s.Scan() {
        b = s.Text()
    }
    fmt.Printf("您輸入的字符串是:%v\n", []string{a, b})
}

上面的代碼中,我們通過bufio包的NewScanner方法創(chuàng)建一個Scanner對象,并通過Split方法自定義了分隔符。在分隔函數(shù)中,我們將逗號作為分隔符,以解析輸入字符串,并將其存儲到變量ab中。

關于“怎么使用scan方法實現(xiàn)控制臺輸入”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“怎么使用scan方法實現(xiàn)控制臺輸入”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

名稱欄目:怎么使用scan方法實現(xiàn)控制臺輸入
轉載來于:http://www.ekvhdxd.cn/article18/pjeegp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供微信公眾號App開發(fā)、自適應網(wǎng)站、域名注冊、虛擬主機軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設網(wǎng)站維護公司