go语言有三种类型的函数:
普通的带有名字的函数
匿名函数或者lambda函数
方法
普通函数声明:
func 函数名(形式参数列表)(返回值列表){
函数体
}
go语言中既支持安全指针,也支持多返回值。
strings.ToLower()将字符串变成小写
strings.ToUpper()将字符串变成大写
strings.TrimSpace()去除空格
strings.TrimPrefix(str," ")从头去除字符
var skillParam = flag.String("skill","","skill to perform") // 定义命令行参数skill,从命令行输入--skill可以将=后的字符串传入skillParam指针变量 if f,ok := skill[*skillParam];ok{} // skillParam是一个*string类型的指针变量,使用skillParam获取命令行传过来的值, 并在map中查找对应命令行参数指定的字符串函数 go run main.go --skill=aaa
生成器:
func playerGen(name string) func() (string, int) { hp := 150 return func() (string, int) { return name, hp } } func main() { generator := playerGen("dsb") name, hp := generator() fmt.Println(name, hp) }
可变参数类型:...type
...type的类型之内作为函数的参数,是语法糖,可以接受不定数量的参数
...interface{}可以传任意参数类型
func myfunc(args ...int) { for _, arg := range args { fmt.Println(arg) } } func main() { myfunc(1, 2, 3, 4, 5, 6, 7) }
拼接字符串操作:
var b bytes.Buffer
b.WriteString() // 写入字符串数组
b.String() // 字符串数组
// 对s进行类型断言(可以对interface{}进行断言,判断变量的实际类型) switch s.(type){ case bool: typeString = "bool" case string: typeString = "string" case int: typeString = "int" }
11