Cho đến bây giờ chúng ta chỉ thấy các chương trình sử dụng các giá trị bằng chữ [số, chuỗi, v.v. ] nhưng những chương trình như vậy không đặc biệt hữu ích. Để tạo ra các chương trình thực sự hữu ích, chúng ta cần tìm hiểu hai khái niệm mới. biến và báo cáo luồng điều khiển. Chương này sẽ khám phá các biến chi tiết hơn
Một biến là một vị trí lưu trữ, với một loại cụ thể và một tên liên quan. Hãy thay đổi chương trình chúng ta đã viết trong chương 2 để nó sử dụng một biến
package main import "fmt" func main[] { var x string = "Hello World" fmt.Println[x] }
Lưu ý rằng chuỗi ký tự từ chương trình gốc vẫn xuất hiện trong chương trình này, nhưng thay vì gửi nó trực tiếp đến hàm
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }2, chúng ta sẽ gán nó cho một biến. Các biến trong Go được tạo trước tiên bằng cách sử dụng từ khóa
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }3, sau đó chỉ định tên biến [
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }4], loại [_______15] và cuối cùng gán giá trị cho biến [
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }6]. Bước cuối cùng là tùy chọn nên một cách khác để viết chương trình sẽ như thế này
package main import "fmt" func main[] { var x string x = "Hello World" fmt.Println[x] }
Các biến trong Go tương tự như các biến trong đại số nhưng có một số khác biệt nhỏ
Đầu tiên, khi nhìn thấy biểu tượng
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }7, chúng ta có xu hướng đọc nó là “x bằng chuỗi Hello World”. Không có gì sai khi đọc chương trình của chúng ta theo cách đó, nhưng tốt hơn nên đọc nó như “x nhận chuỗi Hello World” hoặc “x được gán chuỗi Hello World”. Sự khác biệt này rất quan trọng bởi vì [như tên của chúng sẽ gợi ý] các biến có thể thay đổi giá trị của chúng trong suốt thời gian tồn tại của chương trình. Hãy thử chạy như sau
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }
Trong thực tế, bạn thậm chí có thể làm điều này
var x string x = "first " fmt.Println[x] x = x + "second" fmt.Println[x]
Chương trình này sẽ vô nghĩa nếu bạn đọc nó như một định lý đại số. Nhưng sẽ hợp lý nếu bạn cẩn thận đọc chương trình dưới dạng danh sách các lệnh. Khi chúng ta thấy
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }8, chúng ta nên đọc nó là “gán nối giá trị của biến x và chuỗi ký tự thứ hai cho biến x. ” Phía bên phải của
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }7 được thực hiện trước và kết quả sau đó được gán cho phía bên trái của
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }7
Dạng
var x string x = "first " fmt.Println[x] x = x + "second" fmt.Println[x]1 phổ biến trong lập trình đến nỗi Go có một câu lệnh gán đặc biệt.
var x string x = "first " fmt.Println[x] x = x + "second" fmt.Println[x]2. Chúng ta có thể viết
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }8 thành
var x string x = "first " fmt.Println[x] x = x + "second" fmt.Println[x]4 và nó sẽ làm điều tương tự. [Các toán tử khác có thể được sử dụng theo cách tương tự]
Một điểm khác biệt giữa cờ vây và đại số là chúng ta sử dụng một biểu tượng khác cho đẳng thức.
var x string x = "first " fmt.Println[x] x = x + "second" fmt.Println[x]5. [Hai dấu bằng nhau cạnh nhau]
var x string x = "first " fmt.Println[x] x = x + "second" fmt.Println[x]5 là một toán tử giống như
var x string x = "first " fmt.Println[x] x = x + "second" fmt.Println[x]7 và nó trả về một giá trị boolean. Ví dụ
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }0
Chương trình này nên in
var x string x = "first " fmt.Println[x] x = x + "second" fmt.Println[x]8 vì
var x string x = "first " fmt.Println[x] x = x + "second" fmt.Println[x]9 không giống với
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }00. Mặt khác
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }4
Điều này sẽ in ra
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }01 vì hai chuỗi giống nhau
Vì việc tạo một biến mới có giá trị bắt đầu rất phổ biến nên Go cũng hỗ trợ một câu lệnh ngắn hơn
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }6
Lưu ý
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }02 trước
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }7 và không có loại nào được chỉ định. Loại này không cần thiết vì trình biên dịch Go có thể suy ra loại dựa trên giá trị bằng chữ mà bạn gán cho biến. [Vì bạn đang gán một chuỗi ký tự, nên
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }4 được cung cấp loại
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }5] Trình biên dịch cũng có thể suy luận với câu lệnh
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }3
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }2
Điều tương tự làm việc cho các loại khác
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }3
Nói chung, bạn nên sử dụng mẫu đơn ngắn hơn này bất cứ khi nào có thể
Cách đặt tên biến
Đặt tên biến đúng cách là một phần quan trọng trong phát triển phần mềm. Tên phải bắt đầu bằng một chữ cái và có thể chứa các chữ cái, số hoặc ký hiệu
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }07 [gạch dưới]. Trình biên dịch Go không quan tâm bạn đặt tên biến là gì, vì vậy tên đó có ý nghĩa vì lợi ích của bạn [và những người khác]. Chọn tên mô tả rõ ràng mục đích của biến. Giả sử chúng ta có những điều sau đây
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }5
Trong trường hợp này x không phải là một tên rất hay cho một biến. Một cái tên tốt hơn sẽ là
package main import "fmt" func main[] { var x string x = "Hello World" fmt.Println[x] }0
hoặc thậm chí
package main import "fmt" func main[] { var x string x = "Hello World" fmt.Println[x] }1
Trong trường hợp cuối cùng này, chúng tôi sử dụng một cách đặc biệt để biểu diễn nhiều từ trong một tên biến được gọi là chữ thường lạc đà [còn được gọi là chữ hỗn hợp, mũ gập ghềnh, lưng lạc đà hoặc lưng gù]. Chữ cái đầu tiên của từ đầu tiên là chữ thường, chữ cái đầu tiên của các từ tiếp theo là chữ hoa và tất cả các chữ cái khác là chữ thường
Phạm vi
Quay trở lại chương trình chúng ta đã thấy ở đầu chương
package main import "fmt" func main[] { var x string = "Hello World" fmt.Println[x] }
Một cách khác để viết chương trình này sẽ như thế này
package main import "fmt" func main[] { var x string x = "Hello World" fmt.Println[x] }3
Lưu ý rằng chúng ta đã di chuyển biến ra ngoài hàm chính. Điều này có nghĩa là các chức năng khác có thể truy cập biến này
package main import "fmt" func main[] { var x string x = "Hello World" fmt.Println[x] }4
Hàm
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }08 hiện có quyền truy cập vào biến
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }4. Bây giờ giả sử rằng chúng tôi đã viết cái này thay vì
package main import "fmt" func main[] { var x string x = "Hello World" fmt.Println[x] }5
Nếu bạn chạy chương trình này, bạn sẽ thấy một lỗi
package main import "fmt" func main[] { var x string x = "Hello World" fmt.Println[x] }6
Trình biên dịch cho bạn biết rằng biến
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }4 bên trong hàm
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }08 không tồn tại. Nó chỉ tồn tại bên trong hàm
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }42. Phạm vi nơi bạn được phép sử dụng
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }4 được gọi là phạm vi của biến. Theo đặc tả ngôn ngữ “Go được xác định phạm vi từ vựng bằng cách sử dụng các khối”. Về cơ bản, điều này có nghĩa là biến tồn tại trong các dấu ngoặc nhọn gần nhất
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }44
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }45 [một khối] bao gồm mọi dấu ngoặc nhọn [khối] lồng nhau, nhưng không nằm ngoài chúng. Phạm vi có thể hơi khó hiểu lúc đầu;
hằng số
Go cũng có hỗ trợ cho các hằng số. Hằng số về cơ bản là các biến có giá trị không thể thay đổi sau này. Chúng được tạo giống như cách bạn tạo biến nhưng thay vì sử dụng từ khóa
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }3, chúng tôi sử dụng từ khóa
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }47
package main import "fmt" func main[] { var x string x = "Hello World" fmt.Println[x] }7
Cái này
package main import "fmt" func main[] { var x string x = "Hello World" fmt.Println[x] }8
Kết quả trong một lỗi thời gian biên dịch
package main import "fmt" func main[] { var x string x = "Hello World" fmt.Println[x] }9
Hằng số là một cách tốt để sử dụng lại các giá trị chung trong một chương trình mà không cần viết chúng ra mỗi lần. Ví dụ:
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }48 trong gói
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }49 được định nghĩa là một hằng số
Xác định nhiều biến
Go còn có một cách viết tắt khác khi bạn cần định nghĩa nhiều biến
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }0
Sử dụng từ khóa
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }3 [hoặc
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }47] theo sau là dấu ngoặc đơn với mỗi biến trên một dòng riêng
Một chương trình ví dụ
Đây là một chương trình mẫu lấy một số do người dùng nhập vào và nhân đôi số đó
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }1
Chúng tôi sử dụng một chức năng khác từ gói
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }62 để đọc đầu vào của người dùng [
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }63].
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }64 sẽ được giải thích trong chương sau, bây giờ tất cả những gì chúng ta cần biết là
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }63 điền vào đầu vào bằng số chúng ta nhập
Các vấn đề
Hai cách để tạo một biến mới là gì?
Giá trị của
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }
4 sau khi chạy là bao nhiêu.
______267?Phạm vi là gì và làm thế nào để bạn xác định phạm vi của một biến trong Go?
Sự khác biệt giữa
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }
3 vàpackage main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }
47 là gì?Sử dụng chương trình ví dụ làm điểm bắt đầu, hãy viết chương trình chuyển đổi từ độ F sang độ C. [
package main import "fmt" func main[] { var x string x = "first" fmt.Println[x] x = "second" fmt.Println[x] }
20]Bạn có thể chỉ định một chuỗi không?
Việc gán chuỗi được thực hiện bằng cách sử dụng toán tử = và sao chép các byte thực của chuỗi từ toán hạng nguồn đến và bao gồm cả byte null sang biến ở phía bên trái, biến này phải thuộc loại chuỗi. Bạn có thể tạo một biến kiểu chuỗi mới bằng cách gán cho nó một biểu thức kiểu chuỗiBạn có thể gán một chuỗi cho một biến trong C không?
C có rất ít hỗ trợ cú pháp cho chuỗi. Không có toán tử chuỗi [chỉ có toán tử mảng ký tự và con trỏ ký tự]. Bạn không thể gán chuỗi .Là một chuỗi được coi là một biến?
Hai loại biến phổ biến mà bạn có thể thấy là số và chuỗi .Một chuỗi có thể là một tên biến không?
Biến chuỗi là biến chứa chuỗi ký tự . Đó là một phần của bộ nhớ đã được lập trình viên đặt tên. Tên này trông giống như những tên biến mà bạn đã thấy cho đến nay, ngoại trừ tên của một biến chuỗi kết thúc bằng ký hiệu đô la, $. $ là một phần của tên.