Variable
Biến trong Golang thường đặt theo phong cách “short name” (vd x, y) và “cammel case” và case-sensitive (phân biệt chữ hoa chữ thường )
Nó phải bắt đầu bằng một chữ cái hoặc dấu gạch dưới và chữ cái đầu tiên là chữ hoa hay chữ thường đều có ý nghĩa đặc biệt. Chữ in hoa có thể trích dẫn bên ngoài package, chữ thường chỉ sử dụng bên trong package, điều này sẽ tiếp tục được chia sẻ trong các bài viết sau.
Statement
Đầu tiên sử dụng từ khóa var
để khai báo các biến:
Trái ngược với C và các ngôn ngữ phong cách như C (C++, C#, Java), kiểu đứng sau tên biến. Lúc mới chuyển qua Go, tôi đã không quen với điều này.
Kiểu dữ liệu (type) và biểu thức (expression) có thể bỏ qua một, nhưng không thể bỏ qua cả hai. Nếu kiểu dữ liệu bị bỏ qua, kiểu dữ liệu được xác định bởi biểu thức khởi tạo; nếu biểu thức bị bỏ qua, giá trị khởi tạo là giá trị 0
của loại tương ứng.
Tức là 0
cho kiểu số, false
cho boolean, ""
cho chuỗi , nil
cho interface và reference (slice, pointer, map, channel, function) và đối với các loại hỗn hợp như array hoặc structure thì tất cả các phần tử hoặc thành viên của nó đều bằng 0 ứng với kiểu dữ liệu.
Vì vậy, không có biến chưa được khởi tạo trong Go.
Khai báo một biến duy nhất:
Khai báo nhiều biến cùng lúc:
Nên khai báo nhiều biến cùng lúc theo nhóm:
Cách thứ hai là khai báo biến ngắn (short variable declaration):
Khai báo với :=
trình biên dịch Go sẽ tự động suy ra kiểu dữ liệu của biến. Lưu ý sự khác biệt giữa := và =, := là khai báo và gán, = chỉ là phép gán.
Cách khởi tạo này rất tiện lợi và thường được sử dụng khi khai báo, khởi tạo biến cục bộ.
Ví dụ:
nhiều biến:
Một điều lưu ý là khi khai báo nhiều biến thì phải có ít nhất một biến mới, nếu không sẽ báo lỗi.
Cách thứ ba sử dụng hàm new
:
Khởi tạo giá trị mặc định của T
và trả về địa chỉ của nó.
Trước tiên tôi sẽ nói về cách lấy địa chỉ của biến, nó thực sự rất đơn giản, chỉ cần &
(giống C và C++).
Khai báo một biến kiểu số nguyên rồi lấy địa chỉ của nó:
Khai báo biến sử dụng hàm new
:
Hãy cùng xem một ví dụ khác, hai hàm sau là tương đương nhau, chỉ khác là khai báo new
dùng ít biến trung gian hơn.
Assignment
Dùng = để gán:
Ví dụ:
Phép gán nhiều biến:
Tính năng này giống Python thực sự rất hữu ích, bạn thử nghĩ xem, bạn không thể làm điều này bằng ngôn ngữ C. Để đạt được hiệu quả tương tự, bạn phải sử dụng một biến trung gian.
Nếu có những biến không cần thiết thì sử dụng định danh rỗng _
( Blank Identifier) để bỏ qua, trong ngôn ngữ Go nếu một biến được khai báo nhưng không được sử dụng thì chương trình sẽ báo lỗi.
Scope
Phạm vi biến (scope) được chia thành toàn cục (global) và cục bộ (local), và biến cục bộ sẽ ghi đè lên biến toàn cục:
Khi sử dụng các câu lệnh điều khiển luồng (flow control statement), cần đặc biệt chú ý đến phạm vi của các biến:
Cách viết đúng:
Constant
Một hằng đại diện cho một giá trị không đổi trong quá trình thực thi chương trình.
Statement
Sử dụng từ khóa const
để khai báo, và cú pháp tương tự như biến. Không sử dụng :=
để khai báo hằng!
Nói chung, khi đặt tên cho một hằng số, nên đặt một cái tên có ý nghĩa rõ ràng.
Khai báo một hằng đơn:
Khai báo nhiều hằng
iota
Việc khai báo hằng cũng có thể sử dụng trình tạo hằng iota, hàm này không hiển thị giá trị của hằng mà bắt đầu từ 0 và thêm từng mục 1 vào.
Đặt iota
lại về 0 ở đầu const
.
Nó cũng có thể được sử dụng như một kiểu liệt kê, chẳng hạn như 7 ngày trong tuần, mỗi ngày được biểu thị bằng một con số, thì bạn có thể khai báo như sau: