Golang:在一行上堆叠多个方法调用

时间:2016-04-19 16:36:54

标签: function methods go

Go入门。 我正在尝试编写一个函数,标题案例的名字然后是第二个。 为什么我不能像下面那样堆叠方法调用?

(我之前想要放一个.ToLower的原因是因为.Title仅限制了第一个字母而其余部分保持不变)

package main

import (
  "fmt"
  "strings"
)

func main() {
  firstName := "mElVIn"
  lastName := "themelvINATor"
  fmt.Println(nameCap(firstName, lastName))
}

func nameCap(s1, s2 string) (str1, str2 string) {
  s1 = strings.ToLower(s1).Title(s1)
  s2 = strings.ToUpper(s2)

  return s1, s2
}

1 个答案:

答案 0 :(得分:2)

您可以尝试执行此类操作(根据您的用例进行修改,我不完全确定您尝试获取的输出):

type myString string

func main() {
    firstName := "mElVIn"
    lastName := "themelvINATor"
    fmt.Println(nameCap(firstName, lastName))
}

func (s myString) Title(ss string) string {
    return strings.Title(ss)
}

func nameCap(s1, s2 string) (str1, str2 string) {
    s1 = myString(strings.ToLower(s1)).Title(s1)
    s2 = strings.ToUpper(s2)

    return s1, s2
}

FWIW,没有链接就没有错:

func nameCap(s1, s2 string) (str1, str2 string) {
    s1 = strings.ToLower(s1)
    s1 = strings.Title(s1)
    s2 = strings.ToUpper(s2)

    return s1, s2
}

GoPlay:http://play.golang.org/p/BcJTuBRqbx