Bài học theo mô-đun (1/5)
Chữ ký và thông số
Trong Go, các hàm được khai báo bằng func. Cú pháp chữ ký khác nhau
từ C/Java: loại đi sau tên tham số, được phân tách bằng dấu
không gian. Đó là một lựa chọn giúp đọc to tốt hơn — thay vào đó là "n kiểu int"
của "int n".
Cú pháp cơ bản
func sum(a int, b int) int {
return a + b
}
func greet(name string) {
fmt.Println("ciao", name)
}Một hàm không có giá trị trả về sẽ bỏ qua kiểu trả về.
Các tham số liên tiếp cùng loại
Nếu nhiều tham số liên tiếp có cùng loại, bạn có thể khai báo nó chỉ một lần ở cái cuối cùng. Đó là thành ngữ và bạn sẽ thấy nó ở khắp mọi nơi:
func sum(a, b int) int { return a + b }
func max3(a, b, c float64) float64 { /* ... */ }
func parse(s, sep string, limit int) []string { /* ... */ }Các hàm đã xuất và chưa xuất
Trong Go, khả năng hiển thị được xác định theo tên: số nhận dạng bắt đầu có chữ in hoa được xuất (hiển thị từ các gói khác), những cái khác là riêng tư đối với gói.
func Sum(a, b int) int { ... } // esportata
func helper() { ... } // privata al packageChức năng như giá trị
Các hàm là giá trị hạng nhất: bạn có thể gán chúng, chuyển chúng và trả lại chúng. Chúng ta sẽ tìm hiểu sâu hơn trong bài học về việc đóng cửa.
op := sum // op ha tipo func(int, int) int
fmt.Println(op(2, 3)) // 5main và init: hai cái tên đặc biệt
func main()là điểm vào của góimain. Không có lý lẽ, không có giá trị trả về.func init()được gọi tự động khi khởi động gói (thậm chí nhiều gói lần nếu nhiều tệp xác định một). Hữu ích cho việc thiết lập; sử dụng nó một cách tiết kiệm.
Hãy thử nó
Xác định hàm sum(a, b int) int trả về a+b, sau đó gọi nó trong hàm main bằng (3, 4).
Hiển thị gợi ý
Kiểu chia sẻ: `(a, b int)`. Kiểu trả về SAU dấu ngoặc đơn.
Giải pháp khả dụng sau 3 lần thử
Xác định lời chào (chuỗi tên) (không có giá trị trả về) in 'ciao <name>'.
Hiển thị gợi ý
Không có kiểu trả về nếu hàm không trả về gì.
Giải pháp khả dụng sau 3 lần thử
Loại tham số đi đâu trong Go?
func f(? ?) {}Tóm tắt lại
func name(param type, ...) returnType { ... }.- Gõ sau tên; các tham số liên tiếp cùng loại → khai báo nó chỉ một lần.
- Chữ hoa đầu tiên = đã xuất; chữ thường = riêng tư cho gói.
- Chức năng thuộc hạng nhất (có thể gán, có thể vượt qua).
mainvàinitlà những tên dành riêng có ngữ nghĩa đặc biệt.