Golang の struct 型とか interface 型は、Perl で言うところの Role 脳でなんとかなる
読了まで:約1分
概要: と、
いや、
を
あれ、
これ(golang の )struct 型とか interface 型とかの 罠って どう 乗り 越えたっけな?
と
Golang の
struct 型と interface 型の 関係は、 Perl で 言う所の Role::Tiny::With
と Role::Tiny
みたいな感じなのかな?
と
1. なんと言ったら分からないので、以下実際のコード
1.1 Golang と Perl で Ninjable(ってなんだよ)なインターフェースを定義する
1.1.1 Golang
package ninjable
type Ninjable interface {
Nanja()
}
1.1.2 Perl
package Ninjable;
use strict;
use warnings;
use Role::Tiny qw/ requires /;
requires qw [[ Nanja ]] ;
1.2 Golang と Perl で Ninjable
を満たす何かを実装する (だから Ninjable ってなんだ)
Ninjable
を1.2.1 Golang
package ninjable
type MASAKARINinja struct {
Ninjable
}
func (masakari *MASAKARINinja) Nanja() {
panic(`コードを書け、解釈してやる。慈悲はない`)
}
1.2.2 Perl
package MOHIKANNinja;
use strict;
use warnings;
use utf8;
use Role::Tiny::With qw/ with /;
with qw [[ Ninjable ]] ;
sub Nanja {
die "ひでぶ";
}
2. まあ僕はこんな感じでマッピングして最初の方は乗り切りました
えー、Ninjable
と
まあ簡単に
- Golang の
struct 型 と interface 型への 理解の 仕方
と
- Perl に
おける Role::Tiny::With
とRole::Tiny
への理解の 仕方
と、
んで、
- Role based Programming (勝手に
名付けた )
を
Moose::Role
とかMouse::Role
とかMoo::Role
とかRole::Tiny
っぽいモノだけを 使って プログラミングする アレだ!
と
まあでも。
なる
というコトで以上
久しぶりに
特に
終わります。
#FIXME