あの、Box<dyn… というのは動的に内容を判断すべきデータが入るヒープ領域へのポインタですよ…というのは分かるんだけど、なんといいますか、もう少し手心といいますか、抽象的な一単語にはできなかったのかなとか思ってしまいます。が、これはGo脳で考えすぎなんでしょうね

フォロー

Go の interface 型は Java の interface 型などとは根本的に違っていて,他言語ではいわゆる Box 化(Boxing)とかスマートポインタとか呼ばれているものなんだよね。これに気が付いた時は「Go すげー」って思ったよ。だって Box 化の記述って面倒ぢゃん,普通。それをあたかも抽象型のように自然に使えてしまえるのよ, Go ならね。

Rust では Box 化のために Box<dyn Trait> の形式に落とし込む必要がある。公称型なので型を明示しないといけない面倒臭さもあるが,たとえば Java のように

```java
int iv1 = 100;
Integer ib = iv1; // boxing
int iv2 = ib; // unboxing
```

のように暗黙的な boxing/unboxing をやってくれるわけでもないので,面倒臭さが倍増する。 Rust はリソースの所有権管理が重要な要素なのでしょうがないといえばしょうがないのだが。

そう考えると,改めて「Go の interface 型すげー」と思うわけよ。そりゃあ Generics 実装が後回しになるわけだ。どう考えても便利すぎるものw
text.baldanders.info/remark/20
QT: mstdn.jp/@zetamatta/1111624353
[参照]

"ζ"  
あの、Box<dyn… というのは動的に内容を判断すべきデータが入るヒープ領域へのポインタですよ…というのは分かるんだけど、なんといいますか、もう少し手心といいますか、抽象的な一単語にはできなかったのかなとか思ってしまいます。が、これはGo脳で考えすぎなんでしょうね
ログインして会話に参加
Fedibird

様々な目的に使える、日本の汎用マストドンサーバーです。安定した利用環境と、多数の独自機能を提供しています。