[]string
là một mảng chuỗi
Về mặt kỹ thuật, nó là một lát cắt tham chiếu đến một mảng cơ bản
và chúng tôi cũng sử dụng ...string
như một tham số.
Sự khác biệt là gì?
Đối với cấu trúc, không có gì thực sự. Kiểu dữ liệu do cả hai cú pháp đều giống nhau.
Các ...
cú pháp tham số làm cho một tham số variadic. Nó sẽ chấp nhận không hoặc nhiều string
đối số và tham chiếu chúng như một lát cắt.
Đối với việc gọi f
, bạn có thể chuyển một đoạn chuỗi vào tham số variadic với cú pháp sau:
func f(args ...string) {
fmt.Println(len(args))
}
args := []string{"a", "b"}
f(args...)
Cú pháp này có sẵn cho lát được xây dựng bằng cú pháp chữ hoặc lát đại diện cho tham số biến thể (vì thực sự không có sự khác biệt giữa chúng) .
http://play.golang.org/p/QWmzgIWpF8
[]string
là một lát, không phải là một mảng. Sự khác biệt giữa mảng và lát là nhỏ nhưng quan trọng.