Go - Chức năng

Hàm là một nhóm các câu lệnh cùng thực hiện một tác vụ. Mỗi chương trình cờ vây đều có ít nhất một chức năng, đó làmain(). Bạn có thể chia mã của mình thành các chức năng riêng biệt. Cách bạn phân chia mã giữa các chức năng khác nhau là tùy thuộc vào bạn, nhưng về mặt logic, việc phân chia phải sao cho mỗi chức năng thực hiện một nhiệm vụ cụ thể.

Một chức năng declarationcho trình biên dịch biết về tên hàm, kiểu trả về và các tham số. Một chức năngdefinition cung cấp phần thân thực tế của hàm.

Thư viện chuẩn Go cung cấp nhiều hàm tích hợp sẵn mà chương trình của bạn có thể gọi. Ví dụ, hàmlen()nhận các đối số của nhiều kiểu khác nhau và trả về độ dài của kiểu. Nếu một chuỗi được chuyển cho nó, hàm sẽ trả về độ dài của chuỗi theo byte. Nếu một mảng được chuyển cho nó, hàm sẽ trả về độ dài của mảng.

Các hàm còn được gọi là method, sub-routine, hoặc là procedure.

Xác định một chức năng

Dạng tổng quát của định nghĩa hàm trong ngôn ngữ lập trình Go như sau:

func function_name( [parameter list] ) [return_types]
{
   body of the function
}

Định nghĩa hàm trong ngôn ngữ lập trình Go bao gồm tiêu đề hàmthân hàm . Đây là tất cả các phần của một hàm -

  • Func - Nó bắt đầu khai báo một hàm.

  • Function Name- Đó là tên thực của hàm. Tên hàm và danh sách tham số cùng nhau tạo thành chữ ký hàm.

  • Parameters- Một tham số giống như một trình giữ chỗ. Khi một hàm được gọi, bạn chuyển một giá trị cho tham số. Giá trị này được gọi là tham số hoặc đối số thực tế. Danh sách tham số đề cập đến kiểu, thứ tự và số lượng các tham số của một hàm. Các thông số là tùy chọn; nghĩa là, một hàm có thể không chứa tham số.

  • Return Type- Một hàm có thể trả về một danh sách các giá trị. Các kiểu_trả_lệnh là danh sách các kiểu dữ liệu của các giá trị mà hàm trả về. Một số hàm thực hiện các hoạt động mong muốn mà không trả về giá trị. Trong trường hợp này, return_type là không bắt buộc.

  • Function Body - Nó chứa một tập hợp các câu lệnh xác định chức năng làm gì.

Thí dụ

Mã nguồn sau đây hiển thị một hàm được gọi là max(). Hàm này nhận hai tham số num1 và num2 và trả về giá trị tối đa giữa hai tham số:

/* function returning the max between two numbers */
func max(num1, num2 int) int {
   /* local variable declaration */
   result int

   if (num1 > num2) {
      result = num1
   } else {
      result = num2
   }
   return result 
}

Gọi một hàm

Trong khi tạo một hàm Go, bạn đưa ra định nghĩa về những gì hàm phải làm. Để sử dụng một hàm, bạn sẽ phải gọi hàm đó để thực hiện tác vụ đã xác định.

Khi một chương trình gọi một chức năng, điều khiển chương trình được chuyển đến chức năng được gọi. Một hàm được gọi thực hiện một tác vụ được xác định và khi câu lệnh trả về của nó được thực thi hoặc khi đạt đến dấu ngoặc nhọn kết thúc hàm, nó sẽ trả lại điều khiển chương trình trở lại chương trình chính.

Để gọi một hàm, bạn chỉ cần chuyển các tham số cần thiết cùng với tên hàm của nó. Nếu hàm trả về một giá trị, thì bạn có thể lưu trữ giá trị trả về. Ví dụ -

package main

import "fmt"

func main() {
   /* local variable definition */
   var a int = 100
   var b int = 200
   var ret int

   /* calling a function to get max value */
   ret = max(a, b)

   fmt.Printf( "Max value is : %d\n", ret )
}

/* function returning the max between two numbers */
func max(num1, num2 int) int {
   /* local variable declaration */
   var result int

   if (num1 > num2) {
      result = num1
   } else {
      result = num2
   }
   return result 
}

Chúng tôi đã giữ hàm max () cùng với hàm main () và biên dịch mã nguồn. Trong khi chạy tệp thực thi cuối cùng, nó sẽ tạo ra kết quả sau:

Max value is : 200

Trả về nhiều giá trị từ Hàm

Một hàm Go có thể trả về nhiều giá trị. Ví dụ -

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)
}

Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:

Kumar Mahesh

Đối số hàm

Nếu một hàm sử dụng các đối số, nó phải khai báo các biến chấp nhận giá trị của các đối số. Các biến này được gọi làformal parameters của hàm.

Các tham số chính thức hoạt động giống như các biến cục bộ khác bên trong hàm và được tạo khi nhập vào hàm và bị hủy khi thoát.

Trong khi gọi một hàm, có hai cách mà các đối số có thể được truyền cho một hàm:

Sr.No Loại & Mô tả Cuộc gọi
1 Gọi theo giá trị

Phương thức này sao chép giá trị thực của một đối số vào tham số chính thức của hàm. Trong trường hợp này, các thay đổi được thực hiện đối với tham số bên trong hàm không ảnh hưởng đến đối số.

2 Gọi bằng cách tham khảo

Phương thức này sao chép địa chỉ của một đối số vào tham số chính thức. Bên trong hàm, địa chỉ được sử dụng để truy cập đối số thực được sử dụng trong lệnh gọi. Điều này có nghĩa là các thay đổi được thực hiện đối với tham số sẽ ảnh hưởng đến đối số.

Theo mặc định, Go sử dụng lệnh gọi theo giá trị để chuyển đối số. Nói chung, nó có nghĩa là mã bên trong một hàm không thể thay đổi các đối số được sử dụng để gọi hàm. Chương trình trên, trong khi gọi hàm max (), đã sử dụng cùng một phương thức.

Sử dụng chức năng

Một hàm có thể được sử dụng theo những cách sau:

Sr.No Sử dụng & Mô tả chức năng
1 Chức năng như giá trị

Các hàm có thể được tạo nhanh chóng và có thể được sử dụng làm giá trị.

2 Chức năng đóng cửa

Các hàm bao đóng là các hàm ẩn danh và có thể được sử dụng trong lập trình động.

3 phương pháp

Các phương thức là các chức năng đặc biệt với bộ thu.