1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[翻訳転載] Golang Tip #7: 三項演算子

Posted at

はじめに

本記事は以下のツイートの翻訳転載です。

三項演算子

Goは、a > b ? a : bのような組み込みの三項演算子をサポートしていません。

しかし、Go 1.18からはジェネリックスを使って同じような機能の関数を実装できます。

image

おわりに

Goを書いていて三項演算子が欲しい場面は多々あるが、

  • 三項演算子を使いたいケースは全てifで代用可能
  • 三項演算子がネストされる場合、可読性がかなり落ちる

ため、Goで採用されていないのも納得できる。

The reason is a simple design choice. The operator although once understood, is an easy one is in fact a complicated construct for someone who is new to code. The Go programming language chose the simple approach of if-else. This is a longer version of the operator, but it is more readable.

それも含めて、

Ter(true, 1, 2)

だと何をしているのかTerの実装を見るまで(個人的には)本当にわからないので、
三項演算子の代替実装を導入するにしても関数名については要検討かと思う。

(三項演算子イコールTernary Operatorだと言うことに慣れていれば違和感ないのか?ちょっとわからない)

Go1.21でcmpパッケージが導入され、以下のようにデフォルト値を使用するために三項演算子を使用したい場合、cmp.Orで代用することができるので、
それで足りるならcmp.Orを使用するのがいいと思う。

const foo = bar ? bar : "baz";
foo := cmp.Or(bar, "baz")

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?