TIL@2025-12-01

ルール AIの書いた文章ではなく自分で書くこと AIから教えてもらったことをそのまま鵜呑みにしないで、必ず他の情報(一次情報かどうかは問わない)も調べた上で記述すること 可能な限り、経験として得た知識について記載すること。事後的に経験として得たものでも可とする Goの型について 最近Goを本格的に勉強し始めた。これまでGoで何かアプリケーションを開発した経験はあるが、基礎から勉強をし直すということでA Tour of Goを取り組んだ。その中で、Goのinterfaceについて面白かったのでまとめることにした。 interface Goではinterfaceは公称型ではなく構造的部分型として扱われる。一方、structは公称型として扱われる。 また、interfaceは明示的に準拠せずとも、型のシグネチャが一致していれば自動的に準拠される。 動的型付け言語におけるダックタイピングのようなことがGoのInterfaceではコンパイル時に保証することができる。 package main import "fmt" type Movable interface { move(spped int) } type Vehicle struct { } func (*Vehicle) move(speed int) { fmt.Println("Vehicle moves at", speed, "km.") } type Trolley struct{} func (*Trolley) move(speed int) { fmt.Println("Trolley moves at", speed, "km.") } func main() { var movable Movable = &Vehicle{} // *Vehicleはmove(speed:)を実装しているので自動的にMovableに準拠する movable.move(30) movable = &Trolley{} // *TrolleyもVehicleと同様に自動的にMovableに準拠する movable....

December 1, 2025 · 1 min · Fumiya Tanaka