空でない文字列をテストするのに最適な(最も慣用的な)方法はどれですか(Go の場合)?
if len(mystring) > 0 { }
または:
if mystring != "" { }
または、他の何か?
ベストアンサー1
どちらのスタイルも Go の標準ライブラリ内で使用されます。
if len(s) > 0 { ... }
パッケージ内に以下の内容が記載されていますstrconv
:http://golang.org/src/pkg/strconv/atoi.go
if s != "" { ... }
パッケージ内に以下の内容が記載されていますencoding/json
:http://golang.org/src/pkg/encoding/json/encode.go
どちらも慣用句であり、十分に明確です。これはむしろ個人の好みと明瞭さの問題です。
ラス・コックスはgolang-nuts スレッド:
コードを明確にするもの。
要素 x を確認する場合は通常、
x == 0 の場合でも len(s) > x と記述しますが、「この特定の文字列であるかどうか」を気にする場合は
s == "" と記述する傾向があります。
成熟したコンパイラは、len(s) == 0 と s == "" を同じ効率的なコードにコンパイルすると想定するのが妥当です
。...コードを明確にします。
指摘されているようにTimmmmの答えただし、Go コンパイラはどちらの場合でも同一のコードを生成します。