func function_name( [parameter list] ) [return_types] { 函數體 }
parameter list:參數列表,參數就像一個佔位符,當函數被調用時,你能夠將值傳遞給參數,這個值被稱爲實際參數。參數列表指定的是參數類型、順序、及參數個數。參數是可選的,也就是說函數也能夠不包含參數。
return_types:返回類型,函數返回一列值。return_types 是該列值的數據類型。有些功能不須要返回值,這種狀況下 return_types 不是必須的。
函數體:函數定義的代碼集合。app
package main import "fmt" func swap(x, y string) (string, string) { return y, x } func main() { a, b := swap("Mahesh", "Kumar") fmt.Println(a, b) } //結果爲:Kumar Mahesh
package main import "fmt" //行數 const LINES int = 10 func ShowYangHuiTriangle() { nums := []int{} for i := 0; i < LINES; i++ { //補空白 for j := 0; j < (LINES - i); j++ { fmt.Print(" ") } for j := 0; j < (i + 1); j++ { var length = len(nums) var value int if j == 0 || j == i { value = 1 } else { value = nums[length-i] + nums[length-i-1] } nums = append(nums, value) fmt.Print(value, " ") } fmt.Println("") } } func main() { ShowYangHuiTriangle() }
package main import ( "fmt" "strconv" ) func add(a, b int) int { return a + b } func multiplicationTable() { for i := 1; i <= 9; i++ { for j := 1; j <= i; j++ { var ret string if i*j < 10 && j != 1 { ret = " " + strconv.Itoa(i*j) } else { ret = strconv.Itoa(i * j) } fmt.Print(j, " * ", i, " = ", ret, " ") } fmt.Print("\n") } } func main() { multiplicationTable() }
Go 語言中變量能夠在三個地方聲明:
函數內定義的變量稱爲局部變量
函數外定義的變量稱爲全局變量
函數定義中的變量稱爲形式參數函數
package main import "fmt" /* 聲明全局變量 */ var a int = 20 func main() { /* main 函數中聲明局部變量 */ var a int = 10 var b int = 20 var c int = 0 fmt.Printf("main()函數中 a = %d\n", a) c = sum(a, b) fmt.Printf("main()函數中 a = %d\n", a) fmt.Printf("main()函數中 c = %d\n", c) } /* 函數定義-兩數相加 */ func sum(a, b int) int { a = a + 1 fmt.Printf("sum() 函數中 a = %d\n", a) fmt.Printf("sum() 函數中 b = %d\n", b) return a + b } main()函數中 a = 10 sum() 函數中 a = 11 sum() 函數中 b = 20 main()函數中 a = 10 main()函數中 c = 31