编辑代码

package main

import (
	"fmt"
    "errors"
)

type Person struct {
    Name string
    Age int
}

type NewPerson struct {
    Name string
    Age int
}

func main() {
	
    // var p1 = Person{"小明", 18}
    // var p2 = Person{"小明", 18}
    // fmt.Println(p1, p2)
    // fmt.Println(p1 == p2)
    // fmt.Println("----------------------------")

    // var p3 = struct{
    //     Name string 
    //     Age int
    // }{"小明", 19}
    // fmt.Println(p1 ==p3)

    fmt.Println("未命名多返回值")
    result1, remainder1, _ := divAndRemainder(5, 2)
    fmt.Printf("result1 = %d remainder1 = %d\n", result1, remainder1)
    x1, y1, _ := divAndRemainder(7, 3)
    fmt.Printf("x1 = %d y1 = %d\n", x1, y1)
    fmt.Println("命名多返回值")
    result2, remainder2, _ := divAndRemainder2(5,2)
    fmt.Printf("result2 = %d remainder2 = %d\n", result2, remainder2)
    x2, y2, _ := divAndRemainder2(7,3)
    fmt.Printf("x2 = %d y2 = %d\n", x2, y2)

}

func divAndRemainder(numerator, denominator int)(int, int, error){
    if denominator == 0 {
        return 0, 0, errors.New("cannot divide by zero")
    }
    return numerator / denominator, numerator % denominator, nil
}

func divAndRemainder2(numerator, denominator int) (result, remainder int, err error) {
    if denominator == 0 {
        err = errors.New("cannot divide by zero")
        // 命名返回值 return 后可不跟返回值,但是不能省略 return 关键字
        return 
    }
    result, remainder = numerator / denominator, numerator % denominator
    return result, remainder, nil
}