Go函数——多返回值和错误信息的处理
Go函数——多返回值和错误信息的处理
秋风醉了 发表于2年前
Go函数——多返回值和错误信息的处理
  • 发表于 2年前
  • 阅读 90
  • 收藏 0
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

摘要: Go函数——多返回值和错误信息的处理

Go函数——多返回值和错误信息的处理

多返回值

在Go中,一个函数可以返回多个值。我们已经在之前例子中看到,许多标准库中的函数返回2个值,一个是期望得到的返回值,另一个是函数出错时的错误信息。下面的例子会展示如何编写多返回值的函数。 下面是一个简单的例子,

package main

import (
	"fmt"
)

func main() {
	a, b := swap("world", "hello") //接收两个返回值
	fmt.Println(a, b)
}

// 两个返回值的函数
func swap(x, y string) (string, string) {
	return y, x
}

还可以为返回值定义一个名字

package main

import (
	"fmt"
)

func main() {
	a, b := swap("world", "hello") //接收两个返回值
	fmt.Println(a, b)

	fmt.Println(split(17))
}

// 两个返回值的函数
func swap(x, y string) (string, string) {
	return y, x
}

// 返回值分别为 x,y
// 同时return 没有指定返回的值,那么会将当前的x,y值返回
func split(sum int) (x, y int) {
	x = sum * 4 / 9
	y = sum - x
	return
}

多返回值中包含error

返回多个返回值,并且包含error错误信息,从而完成了异常信息的传递,go代码示例如下,

package main

import (
	"errors"
	"fmt"
)

func main() {
	/* 创建切片,不指定元素个数*/
	numbers := []int{0, 1, 2, 3, 4, 5, 6, 7, 8}

	if res, err := max(numbers); err != nil {
		fmt.Println(err)
	} else {
		fmt.Println(res)
	}

	slices := make([]int, 0, 0)

	if res, err := max(slices); err != nil {
		fmt.Println(res)
	} else {
		fmt.Println(res)
	}

}
func max(slice []int) (int, error) {

	if len(slice) == 0 || slice == nil {
		return -1, errors.New("数列为空") //生成一个简单的 error 类型
	}

	if len(slice) == 1 {
		return slice[0], nil
	} else if result, _ := max(slice[1:]); slice[0] > result {
		return slice[0], nil
	} else {
		return max(slice[1:])
	}
}

========END========

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 216
博文 605
码字总数 432157
×
秋风醉了
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: