zoukankan      html  css  js  c++  java
  • golang-函数

    1.定义函数

      定义函数先想好输入和输出 ,一个函数最好做一件事情并把事情做好 ,通过大量简短的函数实现整体

      函数签名处指定好输入的参数类型和输出返回值的类型(不写可以不返回)

      函数可以有多个返回值 ,多个返回值需要括号括起来

      函数可以接受任意数量的参数 ,但是类型必须一致 ,可以使用切片收集 ,在函数参数位置定义一个切片 ,在函数内部循环切片

     1 package main
     2 
     3 import (
     4     "fmt"
     5 )
     6 
     7 func Loop(sli ...string) (string, int) {
     8     fmt.Println(sli)
     9     for _, i := range sli {
    10         fmt.Printf("is %v
    ", i)
    11 
    12     }
    13     return "OK", 1
    14 }
    15 
    16 func main() {
    17     a, b := Loop("A", "B", "C", "D", "E")
    18     fmt.Println(a, b)
    19 }
    View Code

    2.具名函数

      可提升函数的可读性 ,但是不利于维护 ,不建议使用

      将签名处声明函数的返回值 ,返回裸return语句

     1 package main
     2 
     3 import (
     4     "fmt"
     5 )
     6 
     7 func Loop(sli ...string) (a,b string) {
     8     fmt.Println(sli)
     9     for _, i := range sli {
    10         fmt.Printf("is %v
    ", i)
    11     }
    12     a,b = "C","D"
    13     return
    14 }
    15 
    16 func main() {
    17     a, b := Loop("A", "B", "C", "D", "E")
    18     fmt.Println(a, b)
    19 }
    View Code

    3.递归函数

      通过不断的调用自身 ,直到满足特定的条件位置

      实现递归就是在return终止语句的时候执行自身 (满足某些条件开始执行自己)

     1 package main
     2 
     3 import "fmt"
     4 
     5 func recursion(x, y int) int {
     6     if x+y < 100 {
     7         x++
     8         y++
     9         fmt.Println("还不够")
    10         return recursion(x, y)
    11     }
    12     return x + y
    13 }
    14 
    15 func main() {
    16     fmt.Println(recursion(1, 2))
    17 }
    View Code

    4.函数作为值传递

      go提供了函数式编程 ,可以将函数作为参数传递给其他函数 ,通过存储函数的变量加括号执行

      函数要传入函数类型参数 ,需要在参数中指定函数的签名 

     1 package main
     2 
     3 import "fmt"
     4 
     5 func inter(f1 func(x int) int, f2 func(y int) int, x int, y int) int { //inter函数参数是规定了传入函数的签名
     6     return f1(x) + f2(y)
     7 }
     8 
     9 func main() {
    10     a := func(x int) int {
    11         return x
    12     }
    13     b := func(y int) int {
    14         return y
    15     }
    16     fmt.Println(inter(a, b, 3, 4))
    17 }
    View Code
  • 相关阅读:
    多维数组的理解
    C++ STL 中erase()的使用需要小心
    大整数相加和大整数相乘
    project1_calculator(使用tkinter实现python计算器,含有具体过程与注释)
    (转)在Source Insight中看Python代码
    class12_pack_grid_place 放置位置
    (转)AttributeError: module 'tkinter' has no attribute 'messagebox'
    class10_Frame 框架
    class9_Menubar 菜单
    class8_Canvas 画布
  • 原文地址:https://www.cnblogs.com/quguanwen/p/11748527.html
Copyright © 2011-2022 走看看