45 lines
739 B
Go
45 lines
739 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"path/filepath"
|
|
)
|
|
|
|
type Pair struct {
|
|
Path string
|
|
Hash string
|
|
}
|
|
|
|
func (p Pair) String() string {
|
|
return fmt.Sprintf("Hash of %s is %s", p.Path, p.Hash)
|
|
}
|
|
|
|
type PairWithLength struct {
|
|
Pair
|
|
Length int
|
|
}
|
|
|
|
func (p PairWithLength) String() string {
|
|
return fmt.Sprintf("Hash of %s is %s; length %d", p.Path, p.Hash, p.Length)
|
|
}
|
|
|
|
func (p Pair) Filename() string {
|
|
return filepath.Base(p.Path)
|
|
}
|
|
|
|
type Filenamer interface {
|
|
Filename() string
|
|
}
|
|
|
|
func main() {
|
|
p := Pair{"/urs", "0xfdfe"}
|
|
pl := PairWithLength{Pair{"/usr/bin", "0xdead"}, 13643532}
|
|
|
|
var fn Filenamer = PairWithLength{Pair{"/usr/bin", "0xdead"}, 13643532}
|
|
|
|
fmt.Println(p)
|
|
fmt.Println(fn)
|
|
fmt.Println(pl.Path)
|
|
fmt.Println(p.Filename())
|
|
}
|