Go言語で文字列がasciiのみで構成されているか調べる

pythonで文字列がascii文字のみで構成されているかどうかを調べる方法をググってて、encodeとかdecodeを使う方法を見つけた。

def is_ascii(u):
    try:
        if isinstance(u, unicode):
            u.encode('ascii')
        elif isinstance(u, str):
            u.decode('ascii')
        else:
            return False
        return True
    except:
        return False

参考 : unicode - How to check if a string in Python is in ASCII? - Stack Overflow


go言語だとutf8stringパッケージに関数が用意されていた

go get code.google.com/p/go.exp/utf8string
package main

import (
	"code.google.com/p/go.exp/utf8string"
	"fmt"
)

func main() {
	ascii := utf8string.NewString("abcde")
	fmt.Println(ascii.IsASCII())
	// -> true

	not_ascii := utf8string.NewString("あいうえお")
	fmt.Println(not_ascii.IsASCII())
	// -> false

	mixed := utf8string.NewString("あいうえおabcde")
	fmt.Println(mixed.IsASCII())
	// -> false
}