2. Chương trình đầu tiên của bạn

Theo truyền thống chương trình đầu tiên của bạn viết ở bất cứ ngôn ngữ nào được gọi là chương trình “Hello World” – Một chương trình chỉ đơn giản là xuất ra dòng chữ Hello World ra terminal. Hãy bắt đầu viết chương trình này bằng Go.

Đầu tiên tạo thư mục để lưu các phần mềm. Ví dụ như tạo thư mục như sau: ~/src/golang-book/chapter2. (Với ~ có nghĩa là thư mục của bạn) Từ terminal bạn có thể gõ các lệnh sau:

mkdir src/golang-book
mkdir src/golang-book/chapter2

Mở text editor và gõ theo nội dung sau:

package main 

import "fmt"

// this is a comment

func main() {
    fmt.Println("Hello World")
}

Lưu ý chắc rằng bạn gõ đúng nội dung như Trên và lưu nó với tên main.go trong thư mục mà chúng ta vừa mới tạo. Mở lại terminal và gõ lệnh sau:

cd src/golang-book/chapter2
go run main.go

Bạn sẽ nhìn thấy dòng chữ Hello World hiển thị trên terminal. Lệnh go run sau đó là tên các file (mỗi file cách nhau bởi dấu cách ), sẽ compile các file này thành một file thực thi và lưu nó ở một thư mục tạm, rồi chạy nó. Nếu bạn không thấy dòng chữ Hello World hiển thị thì bạn có thể bạn gõ sai gì đó trong chương trình (hãy kiểm tra lại và gõ cho đúng). Go compiler sẽ gợi ý cho bạn nơi mà bị lỗi. Giống như hầu hết các compiler, Go compiler khá gập khuôn và không chừa một lỗi nào.

Các đọc một chương trình Go

Hãy xem lại chương trình trên một cách chi tiết. Các chương trình Go được đọc từ trên xuống, từ trái qua phải. (giống như đọc một quyển sách). Dòng đầu tiên thế này:

package main

Dòng này được gọi là “khai báo package”. Tất cả chương trình Go đều phải được bắt đầu bởi dòng khai báo package này. Package là cách mà Go sử dụng để tổ chức cấu trúc và tái sử dụng code. Có 2 loại chương trình Go: thực thi (executables) và thư viện (libraries). Chương trình thực thi là loại chương trình chúng ta có thể chạy trực tiếp từ terminal. (Trên Windows nó định dạng là file .exe)Thư viện là một tập hợp code chúng ta đóng gói (package) lại với nhau, vì vậy chúng có thể sử dụng chúng trong một chương trình khác. Chúng ta đi chi tiết sau về thư viện, giờ thì chúng ta chỉ cần đảm bảo rằng chương trình của chúng ta có dòng khai báo package này.

Dòng kết tiếp là dòng trắng. Trong máy tính biểu diển dấu xuống dòng là một (hoặc vài) kí tự đặc biệt. Dấu dòng mới (newlines), dấu cách (space) dấu tab chúng ta gọi chung là khoảng trắng (whitespace) (bởi vì chúng ta không nhìn thấy nó). Go không quan tâm đến các khoảng trắng này. Chúng ta sử dụng chúng chỉ để dễ dàng đọc hơn. Tức là bạn bỏ dòng này thì chương trình vẫn chạy đúng như thường.

Giờ xem tiếp:

import "fmt"

Từ khóa import là các mà chúng ta include code từ một package khác để sử dụng trong chương trình của chúng ta. Package fmt (viết tắt của chữ format) chứa các hàm giúp chúng ta định dạng cho input và output. Dựa vào những gì chúng ta vừa tìm hiểu về các gói, bạn nghĩ các tệp của gói fmt sẽ chứa gì ở đầu chúng?

Lưu ý rằng chữ fmt ở trên được bao bằng đấu ngoặc kép ". Dấu ngoặc kép được dùng để biểu diễn một string (chuỗi kí tự). Trong Go, string được biểu diễn bằng một dãy các kí tự (chữ, số, kí hiệu,…) có độ dài xác định. Chi tiết hơn về string sẽ được mô tả ở chương tiếp theo, bây giờ quan trọng là bạn nhớ được rằng dấu mở " thì phải được có dấu đóng " tương ứng theo sau đó, và bất cứ thứ gì nằm trong cặp ngoặc kép này được là nội dung của string. Quan trọng: nội dung string không bao gồm cặp dấu " này.

Dòng bắt đầu bằng // được xem là “comment”. Go compiler sẽ bỏ qua các comment này. Nó được viết cho bạn và vì bạn (hoặc cho những người đọc source này) [giúp bạn ghi chú lại những gì bạn muốn nhắn nhủ cho người đọc source]. Go hỗ trợ 2 loại comment: loại 1 là comment bắt đầu bằng 2 dấu // cho đến hết dòng, loại 2 là comment bắt đầu bằng /* và kết thúc bằng */ có thể bao gồm nhiều dòng.

Bây giờ chúng ta xem cách khai báo một function:

func main() {
    fmt.Println("Hello World")
}

Functions là một khối trong chương trình Go. Nó có input, output và một chuỗi các bước gọi các câu lệnh được thực hiện theo đúng thứ tự. Tất cả các function được bắt đầu bằng từ khóa func theo sau là tên của function (trường hợp này là main), sau nữa là một danh sách các tham số được bao quanh bở cặp dấu ngoặc đơn ( ), sau nữa là một kiểu dữ liệu trả về (có thể có hoặc không) cuối cùng là thân chương trình được bao bằng cặp ngoặc nhọn { }. Function này không có tham số, không có kết quả trả về, và chỉ có một lệnh. Tên chương trình main là một tên đặc biệt, bởi vì nó là function mà sẽ được gọi khi chương trình thực hiện.

Chúng ta xét đến mảnh cuối cùng của chương trình là dòng:

    fmt.Println("Hello World")

Dòng lệnh này được tạo ra bởi 3 thành phần. Đầu tiên là chúng ta gọi tên function bên trong một package fmt tên là Println (đó là đoạn fmt.PrintlnPrintln là viết tắt của chữ Print Line). Sau đó chúng ta tạo một string mới chứa các kí tự “Hello World” và gọi hàm (tiếng Anh là invoke, call hoặc execute) đó với string vừa được string này là tham số.

Đến đây, chúng ta có khá nhiều thuật ngữ mới, có thể bạn sẽ thấy hơi choáng ngợp. Nên đôi khi đọc to chương trình của bạn ra thành tiếng có thể giúp bạn hiểu hơn. Các “đọc” lại bằng lời chương trình của chúng ta như sau:

Tạo mới một chương trình thực thi được, tham chiếu đến thư viện fmt và chứa một function tên là main. Function này không có tham số, không trả về gì và thực hiện: Truy cập vào hàm Println trong thư viện fmt và gọi hàm này với một tham số – là chuỗi “Hello World”.

Println là hàm thực sự làm việc trong chương trình này của chúng ta. Bạn có thể đọc thêm mô tả về hàm này trong terminal bằng lệnh:

go doc fmt Println

Bạn sẽ thấy được đoạn mô tả sau:

Println formats using the default formats for its operands and writes to standard output. Spaces are always added between operands and a newline is appended. It returns the number of bytes written and any write error encountered.

Dịch:

Println sử dụng định dạng mặc định cho các toán hạn (tham số đầu vào) và ghi nó ra thiết bị xuất chuẩn (ở đây là terminal). Các dấu cách (space) được tự động thêm vào giữa các toán hạn và dấu xuống dòng được thêm vào cuối cùng. Nó trả về số lượng bytes đã ghi ra và các lỗi xảy ra nếu có.

Go là một ngôn ngữ được mô tả tài liệu rất tốt, nhưng ở mô tả này thì có vẻ hơi khó hiểu nếu bạn chưa từng làm quen với ngôn ngữ nào trước đó. Tuy vậy godoc vẫn là một lệnh vô cùng hữu ích và là nơi mà bạn cần tìm khi có câu hỏi nào đó.

Quay trở lại với function này, tài liệu này nói rằng hàm Println sẽ gửi bất cứ cái gì bạn đưa cho ra thiết bị xuất chuẩn – đây là tên của đầu ra là terminal bạn đang làm mở. Đây là hàm giúp cho dòng chữ Hello World được xuất ra màn hình.

Ở chương tiếp theo chúng ta sẽ tìm hiểu xem các Go lưu trữ và trình bày các thứ khác giống như chữ Hello World bằng cách tìm hiểu về các loại dữ liệu.

Các câu hỏi

  • Khoảng trắng là gì?
  • Comment là gì? Hai cách để viết comment là gì?
  • Chương trình của chúng ta đã bắt đầu bằng từ khóa pakage main. Vậy thì bắt đầu của các file trong package fmt bắt đầu bằng gì?
  • Chúng ta đã sử dụng function Println được khai báo trong package fmt. Nếu chúng ta muốn sử dụng function Exit trong package os thì chúng ta cần làm gì?
  • Chỉnh sửa chương trình chúng ta đã viết ở trên thay vì in ra chữ Hello World thì nó sẽ in ra dòng chữ Hello, my name is theo sau là tên của bạn.

Source: http://www.golang-book.com/books/intro/2

Bình luận

Series Navigation<< 1. Bắt đầu

Leave a Reply

Your email address will not be published.