在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1. 定义:有输入、有输出,用来执行一个指定任务的代码块 func functionname([parametername type]) [returntype] { //function body } //其中参数列表和返回值列表是可选 无参数和返回值的函数 func functionname() { //function body } func test1() { fmt.Println("hello world") } 有参数又返回值的函数 func sumtwo(a int, b int) int { sum := a + b return sum } 如何连续的一系列参数的类型是一样,前面的类型可以不写,例如: func add(a, b int) int { return a + b } func sumsub(a, b int) (int, int) { sum := a + b sub := a - b return sum, sub } 函数调用 func add(a, b int) int { return a + b } func main() { sum := add(2, 3) } 多返回值和可变参数 多返回值 func calc(a, b int) (int, int) { sum := a + b sub := a - b return sum, sub } func main() { sum, sub := add(2, 3) } 对返回值进行命名 func calc(a, b int) (sum int, sub int) { sum = a + b sub = a - b return } func main() { sum, sub := add(2, 3) } _标识符 返回多个值的时候 有的值不想接受就可以用_ func calc(a, b int) (sum int, sub int) { sum = a + b sub = a - b return } func main() { sum, _ := add(2, 3) } 可变参数 // 可以传入0个或者多个参数 func test4(b ...int) int { sum := 0 for i := 0; i < len(b); i++ { sum += b[i] } return sum } defer语句
defer 语句 在函数执行完以后才开始执行, 多个defer语句遵循 堆栈的原则,即后进先出,先进后出 func calc_v1(b …int) (sum int, sub int) { defer fmt.Println(“defer”) return } 多个defer语句,遵循栈的特性:先进后出 func calc_v1(b …int) (sum int, sub int) { defer fmt.Println(“defer1”) defer fmt.Println(“defer2”) return } defer 举例 package main import "fmt" func defer1() { defer fmt.Println("----------------1") fmt.Println("-----------------2") fmt.Println("------------------3") } /* ------------------2 -----------------3 ----------------1 */ func testdefer1(){ for i:=0; i<10; i++ { defer fmt.Printf("this is %d\n", i) } fmt.Println("go-----------") } /* go----------- this is 9 this is 8 this is 7 this is 6 this is 5 this is 4 this is 3 this is 2 this is 1 this is 0 */ func testdefer2(){ i:=5 defer fmt.Printf("defer test i=%d\n",i) i=1000 fmt.Println("over -----------") } /* over ----------- defer test i=5 */ func main() { // defer1() testdefer1() // testdefer2() } 内置函数1. close 主要用来关闭channel 2.len:用来求长度,比如string、array、slice、map、channel 3. new:用来分配内存,主要用来分配值类型,比如int、struct。返回的是指针 4. make:用来分配内存,主要用来分配引用类型,比如chan、map、slice 5. append:用来追加元素到数组、slice中 6.panic和recover:用来做错误处理
|
请发表评论