• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Golang的func参数及返回值操作

    参数及返回值

    参数一指定数据类型为int

    参数二 (…interface{}) 可传任何多个不同类型的参数

    返回值:单个返回值直接指定数据类型可以不使用 (),多个返回值需使用()。各返回值之间使用逗号分隔

    func main() {
     demo.Params(10, 20, "golang", true)
    }
    func Params(id int, params ...interface{}) (error, error) {
     fmt.Println(id)
     fmt.Println(params[0])
     fmt.Println(params[1])
     fmt.Println(params[2])
     for key, val := range params {
      fmt.Println("key", key)
      fmt.Println("val", val, reflect.TypeOf(val))
     }
     return nil, errors.New("error")
    }
    

    Debug如下

    补充:Golang interface{} 作为函数参数和函数返回值例子

    看代码吧~

    package main
    import (
        "errors"
        "fmt"
    )
    type item struct {
        Name string
    }
    func (i item) String() string {
        return fmt.Sprintf("item name:%v", i.Name)
    }
    type person struct {
        Name string
        Sex  string
    }
    func (p person) String() string {
        return fmt.Sprintf("person name:%v sex:%v", p.Name, p.Sex)
    }
    func Parse(i interface{}) interface{} {
        switch i.(type) {
        case string:
            return item{
                Name: i.(string),
            }
        case []string:
            data := i.([]string)
            length := len(data)
            if length == 2 {
                return person{
                    Name: data[0],
                    Sex:  data[1],
                }
            } else {
                return nil
            }
        default:
            panic(errors.New("Type match miss"))
        }
        return nil
    }
    func main() {
        p1 := Parse("apple").(*item)
        fmt.Println(p1)
        p2 := Parse([]string{"zhanghan", "man"}).(*person)
        fmt.Println(p2)
        fmt.Println(p1.Name)
        fmt.Println(p2.Name)
        fmt.Println(p2.Sex)
    }
    

    运行结果如下:

    item name:apple

    person name:zhanghan sex:man

    apple

    zhanghan

    man

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

    您可能感兴趣的文章:
    • golang实现对docker容器心跳监控功能
    • 浅谈golang 中time.After释放的问题
    • golang 定时任务方面time.Sleep和time.Tick的优劣对比分析
    • golang日志包logger的用法详解
    • golang elasticsearch Client的使用详解
    • golang协程池模拟实现群发邮件功能
    • golang 比较浮点数的大小方式
    • Golang: 内建容器的用法
    上一篇:如何让shell终端和goland控制台输出彩色的文字
    下一篇:go 类型转换方式(interface 类型的转换)
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Golang的func参数及返回值操作 Golang,的,func,参数,及,返回,