1. 程式人生 > >Golang輸出世界上所有的語言文字

Golang輸出世界上所有的語言文字

前言

下面這段程式碼,可以瞬間打印出世界上所有的語言文字,英文,日語,漢字,拉丁,漢語,甚至納西文字,藏語,應有盡。而這一切,都源於對hello world程式碼研究的一個小靈感,結果並不是最重要的,可能對於大神來說這一切都是雕蟲小技,但是我覺得自己的想法和思考的過程最來之不易,難能可貴,值得記錄下來。

開始

先來引入一個hello world!

  func main()  {
    a:="helloworld"
    for i:=0;i<len(a) ;i++  {
        fmt.Printf("%c",a[i])
    }
}

ok!毫無懸念,打印出了helloworld。
這裡寫圖片描述

於是我就想,若是換上我們博大精深的漢字會怎樣呢?!
繼續實踐!

func main()  {
    a:="hello世界"
    for i:=0;i<len(a) ;i++  {
        fmt.Printf("%c",a[i])
    }
}

輸出結果:
這裡寫圖片描述
居然對我們漢字這麼不友好,直接給出了看不懂的亂碼。
這是為什麼呢?!搜尋資料發現,咱們的漢字要佔三個位元組,若是我們打印出len(a),輸出的結果是11,那怎麼樣才能讓我們的計算機分別打印出世界的世和世界的界呢? 小編思索後發現這兩種方法:
方法一,使用智慧的for range遍歷的方法,for range會智慧的幫助我們識別我們想要的有效value,程式碼如下:
這裡寫圖片描述


ok,成功打印出了世界二字,而且細心的同學會發現,‘世’的下標為5,到‘界’下標就成了8,這也驗證了漢字佔了三個位元組長度。

因此,使用下標,方法二就誕生了!
方法二:
這裡寫圖片描述

那麼,為啥他們英文字母有著對應的ascii碼,咱們中文是怎麼存在的?!讓我們回到for range的那段程式碼

這裡寫圖片描述
ok!我們發現原來中文也有自己的專屬碼世界對應的分別是19990和30028,這叫作unicode碼,原來是因為go語言原生支援unicode標準,可以使用GO處理世界上任何自然語言!

因此,小編腦洞開啟,大膽實驗,想看看go是不是能打印出世界上所有的文字,程式碼很簡單,利用我們前面所理解的,實現如下

func main() {
    var i int=0
    var t int=0
    for  {
        fmt.Printf("%c",i)
        i++
        //從零一直列印
        time.Sleep(time.Nanosecond)
        //如果列印的太快,有時會不出結果,所以要停頓一下
    //以下幾行是每隔60個換一下行,方便觀察結果
        t++
        if t%60==0 {
            fmt.Println()
        }
    }
}

展示結果部分如下(結果太多,只能部分展示):這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

幾乎世界上所有的文字都源源不斷的輸送到眼前,看起來很高大上的樣子。

以上就是我的一個簡單的小發現了,歡迎大家一起來交流哦!