go函数

Posted on 2019-12-13 17:45  大白不白  阅读(178)  评论(0编辑  收藏  举报

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

Copyright © 2024 大白不白
Powered by .NET 9.0 on Kubernetes