// methodset1.go package main import ( "fmt" ) type List []int func (l List) Len() int { return len(l) } func (l *List) Append(val int) { *l = append(*l, val) } func main() { // A bare value var lst List lst.Append(1) fmt.Printf("%v (len: %d)\n", lst, lst.Len()) // [1] (len: 1) // A pointer value plst := new(List) plst.Append(2) fmt.Printf("%v (len: %d)\n", plst, lst.Len()) // &[2] (len: 1) }