提交 d4e2500b 编写于 作者: _Fighter's avatar _Fighter

2021年12月5日

上级 5993491e
package main
import "fmt"
func arrDefouat() {
var arr1 [3]int // 可以不给初值
arr2 := [4]int{1, 2, 3, 4} // := 必须给赋值
arr3 := [...]int{4, 3, 4, 4, 5, 6}
// 字符串数组
var s1 = [2]string{"hello", "world"}
var s2 = [...]string{"你好", "世界"}
var s3 = [...]string{1: "世界", 0: "你好"}
s4 := [...]string{"你好", "世界"}
var grid [5][4]int
fmt.Println(arr1, arr2, arr3)
fmt.Println(grid)
fmt.Println(s1, s2, s3, s4)
//
for i := 0; i < len(arr3); i++ {
fmt.Println(arr3[i])
}
//只要下标
for i := range arr3 {
fmt.Println(arr3[i])
}
// 下标 与 值
for i, v := range arr3 {
fmt.Println(i, v)
}
// 只要值
for _, v := range arr3 {
fmt.Println(v)
}
}
//[4]int 为值类型
func printArray(arr *[4]int) {
arr[0] = 99
for i, v := range arr {
fmt.Println(i, v)
}
}
func main() {
arrDefouat()
var arr1 [4]int // 可以不给初值
arr2 := [4]int{1, 2, 3, 4} // := 必须给赋值
arr3 := [...]int{4, 3, 4, 4}
printArray(&arr1)
printArray(&arr2)
printArray(&arr3)
fmt.Println(arr1, arr2, arr3)
}
package main
import (
"fmt"
"reflect"
"runtime"
)
/* 返回值 ,可把错误直接返回,不让程序中断执行 */
func eval(a, b int, op string) (int, error) {
switch op {
case "+":
return a + b, nil
case "-":
return a - b, nil
case "*":
return a * b, nil
case "/":
// 返回多个值时,可用下划线 _ 代替不需要的返回值
q, _ := div(78, 9)
return q, nil
default:
// 程序出错,中断执行
//panic(" unsupported opertion:"+op)
return 0, fmt.Errorf(" unsupported opertion:%s", op)
}
}
/*返回两个值*/
func div(a, b int) (q, r int) {
return a / b, a % b
}
/* op 为入的函数*/
func apply(op func(int, int, string) (int, error), a, b int, o string) int {
// 获取被调用的函数名
p := reflect.ValueOf(op).Pointer() // 获取函数指针
opName := runtime.FuncForPC(p).Name()
fmt.Printf(" calling function %s with args (%d,%d)", opName, a, b)
if result, err := op(a, b, o); err != nil {
return 0
} else {
return result
}
}
func swap(a, b *int) {
*b, *a = *a, *b
}
func main() {
if result, error := eval(3, 6, "x"); error != nil {
fmt.Printf("error:%s", error)
} else {
fmt.Println(result)
}
fmt.Println(eval(0, 545, "/"))
fmt.Println(div(15, 9))
// 第一种调用方式
fmt.Println(apply(eval, 3, 4, "+"))
//匿名函数方式
fmt.Println(
apply(
func(a int, b int, o string) (int, error) {
if a == 0 {
return 0, fmt.Errorf("xxxxxxxx %s", o)
}
return a + b, nil
},
100,
90,
"+",
),
)
a, b := 10, 20
swap(&a, &b)
fmt.Println(a, b)
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册