2.golang 函數定義


1.函數的第一行定義了行數,接受什么樣的輸入,並提供什么樣的輸出,形參和返回結果,而這一行被稱為函數簽名。
2.通常結構 func 聲明 + 函數名(形參 ...interface{}) +returnOne,returnTwo int 函數返回值,也可以是返回函數
 比如: func Test()func()int{
      var x = 0;
      return func(){
        x++;
        return x;
        }
    }
3.返回多個值 :func test()(int,string){} //表示返回int 和string 多個值
4.定義不定參數: func test(number ...int){} //表示形參不確定數量,但類型必須是指定的int類型
5.返回具名返回值 func test()(x,y,z,j string ,k int){} // 返回具體的返回值名稱 x,y,z,j
6.將函數作為值傳遞,本質go將函數視為了一種類型
  func main(){
    fn:=func(){fmt.Println("hello,world")}
    anotherFunc(fn) //函數傳遞給函數anotherFunc
  }
  func anotherFunc(f func() string)string{
    return f()
  }



package main

import "fmt"


func main(){

fn:=func(){
fmt.Println("function called")
}
fn()
fmt.Println(anotherFunction(fn))
feedMe(1,0)
}

//函數為形參,函數形參需要聲明騎返回類型,它可以是任何類型
func anotherFunction(f func() string)string{
return f()
}

type class struct{
name string
age int
}

//函數返回一個值
func add(x,y int)int{
return x+y
}

//函數返回多個值
func add1(x,y int,z string)(int,string){
return x+y, z+"ing"
}

//定義不定參數函數, 用三點...表示函數可以接受不確定的多個參數,但是參數類型必須統一
func number(numArr ...int)int{
total:=0
for _,v:=range numArr{
total +=v
}
return total
}

func getAllClass(t ...class) class {
return t[0]
}


//遞歸調用
func feedMe(x int,y int)int{
y = x+y
if y>=5{
fmt.Printf( "i'm full! I have y %d\n",y)
return y
}
fmt.Printf( "i'm still hungry I have y %d\n",y)
return feedMe(x,y)
}
在main中調用 feedME(1,0)


//不確定形參數量,統計他們

func number(numArr ...int)int{
   total:=0
for _,v:=range numArr{
total +=v
}
return total
}

func main(){
  return :=number(1,2,3,4)
  fmt.Printf("%v\n",return)
}

 
























免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM