透過 Golang 輸出所有的 Emoji

之前在做網站的時候要實作一個表情列表的功能,後來到了 StackOverflow 上面詢問如何透過簡單的方式輸出所有的 Emoji(原文:Is it possible to generate all the emojis and append to the select dropdown?),畢竟總不可能自己把每個都複製下來然後塞進列表裡吧,不過那篇文章是 JavaScript 的實作方式,這裡要講解的是如何使用 Golang 來達到相同效果。

按下這裡檢視線上 Demo

package main

import (  
    "fmt"
    "html"
    "strconv"
)

func main() {  
    // 相關範圍可以參考這裡:http://apps.timwhitlock.info/emoji/tables/unicode
    emoji := [][]int{
        // 表情圖示的範圍。
        {128513, 128591},
        // 裝飾符號的範圍。
        {9986, 10160},
        // 交通工具還有地圖的範圍。
        {128640, 128704},
    }

    for _, value := range emoji {
        for x := value[0]; x < value[1]; x++ {
            // 將範圍轉成 Unicode 字串後反脫逸字元,這樣就會出現表情了。
            str := html.UnescapeString("&#" + strconv.Itoa(x) + ";")
            // 輸出表情。
            fmt.Println(str)
        }
    }
}

在 Unicode 裡面 Emoji 是有一定範圍的,意思是這個範圍的都是 Emoji,而且是特定種類,透過這個「範圍」的特徵,我們可以將這個範圍內的 Unicode 全部輸出。

成果會像下面這樣輸出一堆表情。