1. 程式人生 > >day02 Go 函式

day02 Go 函式

1、函式語法要點

  • 返回值型別寫在最後面
  • 可以返回多個值
  • 函式可以作為引數
  • 沒有預設引數,可選引數

 

2、Go 語言函式定義格式如下

func function_name( [parameter list] ) [return_types] {
   函式體
}
  • func:函式由 func 開始宣告
  • function_name:函式名稱,函式名和引數列表一起構成了函式簽名。
  • parameter list:引數列表,引數就像一個佔位符,當函式被呼叫時,你可以將值傳遞給引數,這個值被稱為實際引數。引數列表指定的是引數型別、順序、及引數個數。引數是可選的,也就是說函式也可以不包含引數。
  • return_types:返回型別,函式返回一列值。return_types 是該列值的資料型別。有些功能不需要返回值,這種情況下 return_types 不是必須的。
  • 函式體:函式定義的程式碼集合。

 

3、例項

package main

import (
	"fmt"
	"io/ioutil"
)

func bounded(v int) string {
	if v > 100 {
		return  "A"
	} else  if v > 80 {
		return "B"
	} else {
		return "C"
	}
}

func eval (a,b int, op string)  int  {
	var result int
	switch  op {
	case "+":
		result = a + b
	case "-":
		result = a - b
	case "*":
		result = a * b
	case "/":
		result = a / b
	default:
		panic("unsupport op:" + op)
	}
	return  result
}

func grade(v int) string {
	var g string
	switch {
	case v < 0 || v > 100 :
		panic(fmt.Sprintf("unsupport nums %s",v))
	case v <= 60:
		g = "D"
	case v <= 70:
		g = "C"
	case v <= 80:
		g = "B"
	case v <= 100:
		g = "A"
		}
	return g

}

//返回多個值
func swap(x, y string) (string, string) {
   return y, x
}

func main ( )  {
	fmt.Println(
			bounded(99),
			bounded(22),
			bounded(77),
		)

	// 方法一
	const filename = "abc.txt"
	content,err := ioutil.ReadFile(filename)

	if err != nil {
		fmt.Println(err)
	} else {
		fmt.Printf("%s\n",content)
	}

	//方法二
	if content1,err1 := ioutil.ReadFile(filename) ; err1 != nil {
		fmt.Println(err1)
	} else {
		fmt.Printf("%s\n", content1)
	}

	fmt.Println(
		eval(3,4,"+"),
		eval(1,3,"*"),
		)
	
	fmt.Println(
		grade(50),
		grade(77),
		grade(100),
		)
		
	a, b := swap("Mahesh", "Kumar")
        fmt.Println(a, b)
}