- 配列の部分列にアクセスするための軽量データ構造
- sliceはアクセス手段なので、複数のsliceは一つの配列を共有することができる
- sliceの背後にある配列を基本配列と呼ぶ
図4.1をみるとわかりやすいので参照。
- pointer
my %seen_pkg; | |
my %result; | |
for my $method_struct (@{Class::Inspector->methods(ref $self, 'expanded')}) { | |
my $pkg_name = $method_struct->[1]; | |
my $method_name = $method_struct->[2]; | |
if (exists $seen_pkg{$pkg_name}) { | |
$result{$pkg_name} //= []; | |
push @{$result{$pkg_name}}, $method_name; | |
} |
#!/usr/bin/env perl | |
use strict; | |
use warnings; | |
use Time::Piece; | |
use Time::Seconds; | |
use Date::Calc; | |
use Benchmark qw(cmpthese); | |
warn $^V; |
#7 Interfeace interface型は、他の型のふるまいについて、汎化や抽象を表す。 汎化によって、特定のひとつの実装に日も付かないので、interfaceは私たちにmore flexibleで、adaptableな関数を書かせてくれる。
多くのオブジェクト志向言語はいくつかのinterfaceの概念をもっているが、Goのinterfaceが独特なのは、それらが暗黙的に満たされている点。つまり、与えられた具象型を満たす、すべてのinterfaceを宣言する必要がない。単純に必要なメソッドを所持するだけです。このデザインは 既存の型(特にあなたがコントロールできないpackage内に定義されている型に有用)の変更なしに、既存の具象型によって満たされる新しいインタフェースを作らせてくれる。
この章では、interface型の基本的な仕組みと値をみることから始めます。 途中で、standard libraryからいくつかの重要なinterfaceを学びます。多くのGo プログラムはそれら自身がそうであるように、多くの標準的なインタフェースを多く使おうとします。
https://golang.org/src/sort/sort.go
文字列整形のように、ソートはよく使われる。 最小のクイックソートは15行でかけるとはいえ、強固な実装はもっと長くなるし、欲しい種類のコードではなかった場合、新しく書くことになる。
sort.Sortは連続なデータ型でなくてもいい。