Verkettung von Funktionen in Go?

Habe ich versucht, dies zu tun:

package main

import (
    "fmt"
    "strings"
)

type String string


func (s *String) tolower() String {
    *s = String(strings.ToLower(string(*s)))
    return *s
}

func (s *String) toupper() String {
    *s = String(strings.ToUpper(string(*s)))
    return *s
}

func main() {
    var s String = "ASDF"
    (s.tolower()).toupper() //this fails
    //s.toupper();s.tolower(); //this works
    //s.tolower().toupper() //this fails too
    fmt.Println(s)
}

Aber ich habe diese Fehler:

prog.go:30: cannot call pointer method on s.tolower()
prog.go:30: cannot take the address of s.tolower()

Program exited.

Warum kann ich nicht machen diese Kette zu arbeiten?

  • Beachten Sie, dass s.tolower().toupper() wird auch funktionieren (Sie brauchen nicht die zusätzlichen Klammern: (s.tolower()).toupper()), zumindest im Gehen 1.1 (vielleicht scheitert es in der Go 1.0).
InformationsquelleAutor Derek | 2013-08-09
Schreibe einen Kommentar