package main //TODO: ADD THE BOINK METHOD import ( "fmt" ) //nouns, aka the Players type Male struct { age int name string } type Female struct { age int name string } //outcomes type Pleasure struct { level int `1:10` //maybe later a range? } type Orgasm struct { classification string //maybe later an enum? } //methods that must be satified type SexPartner interface { //email() string kiss(openMouth bool, partner SexPartner) Pleasure //boink(portIdent string) Orgasm Age() int } //receiver method func (m Male) kiss(openMouth bool, partner SexPartner) (p Pleasure) { fmt.Printf("Partner age is: %d compared to Self age %d\n", partner.Age(), m.age) if partner.Age() < 30 { p.level = 9 }else if openMouth { p.level = 6 } else { p.level = 1 } fmt.Println("Male Level Pleasure", p) return p } func (m Male) Age() (age int) { return m.age } func (f Female) kiss(openMouth bool, partner SexPartner) (p Pleasure) { if openMouth { p.level = 5 } else { p.level = 2 } fmt.Println("Female Level Pleasure", p) return p } func (f Female) Age() (age int) { return f.age } //some function that uses the receiver method func test(dude SexPartner, babe SexPartner) string { lipsWideOpen := true; babe.kiss(lipsWideOpen, dude) dude.kiss(lipsWideOpen, babe) return "success" } func test2( player ...SexPartner) { for _, value := range player{ fmt.Println("Test2 Sex Partner: ", value ) } } func main() { hottee := Female{age: 24, name: "Hottee Stripper "} fictionalCharacter := Male{age: 40, name: "Hank Moody"} test(fictionalCharacter, hottee) test2(fictionalCharacter, hottee) }