go là ngôn ngữ lập trình được thiết kế dựa trên ý tưởng lập trình hệ thống. go được phát triển vào năm 2007 bởi Robert Griesemer, Rob Pike và Ken Thompson của Google. Điểm mạnh của Go là trình thu gom rác và hỗ trợ lập trình đồng thời (tương tự như đa luồng). go là một ngôn ngữ được biên dịch tương tự như c/c++, java, pascal… go được ra mắt vào năm 2009 và được sử dụng trong hầu hết các sản phẩm của google.

Một số tính năng

  • Hỗ trợ khai báo kiểu động
  • Biên dịch nhanh
  • Hỗ trợ các tác vụ đồng thời
  • Ngôn ngữ ngắn gọn và rõ ràng
  • Tuy nhiên, chính vì họ muốn ngôn ngữ này cực kỳ đơn giản nên các nhà phát triển đã loại bỏ một số tính năng (và tôi thấy hữu ích) có trong các ngôn ngữ khác, chẳng hạn như:

    • Kế thừa không được hỗ trợ
    • Không nạp chồng toán tử hoặc ghi đè phương thức
    • Thao tác con trỏ không được hỗ trợ (vì lý do bảo mật)
    • Không hỗ trợ các loại chung chung (chẳng hạn như các mẫu trong C++)
    • Số nguyên

      Các kiểu số nguyên trong go là uint8, uint16, uint32, uint64, int8, int16, int32, int64. Các số 8, 16, 32, 64 cho biết máy tính cần sử dụng bao nhiêu bit để biểu diễn số nguyên. uint is unsigned int – là kiểu số nguyên không âm. Bảng sau đây cho biết các giới hạn đối với từng loại số nguyên:

      Loại uint8 còn được gọi là byte và loại int32 còn được gọi là rune.

      Đặc biệt trong go còn có 3 kiểu số nguyên phụ thuộc vào hệ điều hành là uint, int và uintptr, 3 kiểu dữ liệu này có những hạn chế giống như kiến ​​trúc của hệ điều hành bạn đang sử dụng. Ví dụ: nếu bạn đang sử dụng cửa sổ 64 bit, kiểu int sẽ có các hạn chế giống như kiểu uint64. Thông thường int là đủ khi làm việc với số nguyên. Ví dụ: main.go

      Kết quả:

      thả nổi

      Đây là những giá trị có phần thập phân, chẳng hạn 1.234, 123.4… Việc lưu trữ và thao tác với số thực trong máy tính khá phức tạp nên chúng tôi sẽ không đi vào chi tiết. Ở đây chúng tôi chỉ đưa ra một số nhận xét như sau:

      Số thực không bao giờ là tuyệt đối và rất khó để biểu diễn một số thực một cách chính xác. Ví dụ: trừ 1,01 – 0,99 sẽ cho bạn 0,0200000000000000018, chứ không phải 0,02 như bạn nghĩ. Cũng giống như số nguyên, số thực trong máy tính có các giới hạn khác nhau. Trong go có 2 loại số thực là float32 và float64 và 2 loại số phức là complex64 và complex128. Thông thường để biểu diễn số thực bạn chỉ cần sử dụng float64.

      chuỗi

      Chuỗi ký tự (string) là ký tự được đặt trong dấu nháy kép hoặc nháy đơn, dùng để biểu diễn văn bản. Các chuỗi được đặt trong dấu ngoặc kép có thể sử dụng các ký tự điều khiển đặc biệt, chẳng hạn như n cho dòng mới và t cho tab.

      Chúng ta có thể thực hiện một số thao tác phổ biến trên chuỗi, chẳng hạn như tính độ dài của chuỗi, lấy các ký tự tại một vị trí nhất định và nối chuỗi. Ví dụ string.go

      Một khoảng trắng cũng được tính là một ký tự, vì vậy độ dài chuỗi “hello world” là 11.

      Các ký tự trong chuỗi được đánh số bắt đầu từ 0. Câu lệnh “hello world”[1] sẽ cho kết quả là ký tự ở vị trí 2, nhưng nếu bạn chạy đoạn mã trên, kết quả sẽ là 101 thay vì ký tự ‘e’ vì 101 là mã ascii của ký tự ‘e’

      Chúng ta có thể sử dụng thao tác + trên 2 chuỗi và kết quả là một chuỗi mới được nối từ 2 chuỗi trước đó. kết quả

      Boolean

      Giá trị Boolean là giá trị 1 bit với 2 giá trị true và false, được sử dụng để biểu thị đúng hoặc sai. Có 3 thao tác có thể thao tác các phép toán luận là && (và cho phép), || (hoặc) và ! (không cho phép).

      Bảng sau đây mô tả cách thực hiện các phép toán Boolean:

      Cho phép và:

      Hoặc:

      Không phải:

      Ví dụ:

      Kết quả:

      Biến là nơi chứa dữ liệu, biến bao gồm hai phần: tên biến và kiểu dữ liệu. Ví dụ:

      biến.go

      Đoạn mã chương trình trên in ra từ hello world giống như bài trước, nhưng thay vì đặt trực tiếp chuỗi hello world vào hàm println(), chúng ta gán nó cho một biến có tên là x. .

      Để khai báo một biến trong go, chúng ta sử dụng từ khóa var, sau đó là tên biến, sau đó là kiểu dữ liệu và cuối cùng chúng ta có thể gán giá trị cho biến hoặc gán giá trị sau. Ví dụ:

      biến_2.go

      Biến trong go hay lập trình nói chung tương tự như biến mà chúng ta học trong toán học, nhưng có một chút khác biệt, biến trong lập trình có thể thay đổi giá trị của chúng, vd. Ví dụ:

      biến_3.go

      Ngoài ra, cách khai báo giá trị của biến cũng khác. Ví dụ: khi bạn bắt gặp dòng x=”hello world”, bạn có thể nói “x bằng hello world”, nhưng sẽ chính xác hơn nếu nói “x has value hello world” hoặc “x is gán value world” , bạn OK”.

      Cũng thường trong lập trình chúng ta thường khai báo biến và gán giá trị cho nó, vậy go cho phép chúng ta khai báo và gán giá trị nhanh như sau:

      x := “hello world” Ở đây chúng ta không dùng từ khóa var, không khai báo kiểu dữ liệu mà viết tên biến, sau đó dùng toán tử := theo sau là giá trị để khai báo nhanh một biến và chỉ định nó ngay tại chỗ. Trình biên dịch go sẽ tự động nhận dạng kiểu dữ liệu dựa trên giá trị bạn gán cho biến. Ví dụ: giá trị mà go here nhìn thấy là “hello world”, tức là một chuỗi, vì vậy nó sẽ tự động gán kiểu dữ liệu chuỗi cho biến x. Tóm lại, hai dòng dưới đây có cùng chức năng:

      Biến được đặt tên Tên biến có thể có một hoặc nhiều ký tự và có thể chứa các chữ cái, dấu gạch dưới _ và số. Ký tự đầu tiên phải là một chữ cái hoặc dấu gạch dưới.

      go không quan trọng bạn đặt tên biến như thế nào nên khi đặt chúng ta nên đặt sao cho dễ nhớ và dễ hiểu. Ví dụ:

      Phạm vi của biến mà chúng ta đã viết lại ở trên trong chương trình hello world như sau:

      scope.go

      Ở đây chúng ta đặt phần khai báo của biến x bên ngoài hàm main(). Khi làm như vậy, bất kỳ hàm nào cũng có thể truy cập biến x. Ví dụ:

      Trong đoạn mã trên, hàm f() có thể đọc giá trị của biến x. Giả sử chúng ta đặt lại biến x trong hàm main như sau:

      Lỗi sau sẽ xảy ra khi biên dịch đoạn mã trên:

      output main.go:11: undefined: x Dòng lỗi ở trên có nghĩa là biến x không tồn tại. Vì nó chỉ được khai báo trong hàm main() nên nó chỉ có thể đọc được trong hàm main(). Chính xác hơn, theo tài liệu của go, các biến chỉ có thể được đọc trong cặp dấu ngoặc nhọn {} gần nhất.

      Hằng đơn giản là các biến có giá trị không thể thay đổi. Các hằng số được khai báo và gán giống như các biến, điểm khác biệt duy nhất là từ khóa var được thay thế bằng từ khóa const. Ví dụ:

      constant.go

      Chúng ta không thể thay đổi giá trị của hằng số.

      Đoạn mã trên sẽ báo lỗi sau:

      output main.go:7: không thể gán cho x Các hằng số thường được dùng để lưu trữ các giá trị có thể sử dụng lại mà không cần khai báo lại. Có nhiều hằng số tích hợp sẵn, chẳng hạn như hằng số pi trong gói toán học.

      Khai báo nhiều biến Thay vì khai báo từng biến trên một dòng, bạn có thể khai báo nhiều biến cùng một lúc như sau:

      Chúng tôi sử dụng từ khóa var (hoặc const), theo sau là cặp dấu ngoặc đơn (), tiếp theo là danh sách các biến và giá trị của chúng.

      Tuyên bố

      Giả sử chúng ta cần in các số từ 1 đến 10 ra màn hình, chúng ta có thể viết 10 câu lệnh fmt.println() như sau:

      Câu lệnh for cho phép lặp lại nhiều lần câu lệnh. Ví dụ:

      Đi

      Đoạn mã trên sẽ in dãy số từ 1 đến 10 ra màn hình, thay vì phải sử dụng 10 câu lệnh fmt.println() thì bây giờ chúng ta chỉ cần sử dụng câu lệnh for.

      Trong đoạn mã trên, chúng ta đã khai báo biến i và đặt giá trị là 1. Sau đó, chúng tôi sử dụng câu lệnh for để chạy câu lệnh fmt.println() 10 lần bằng cách theo sau từ khóa for với biểu thức điều kiện i < = 10, theo sau là một khối câu lệnh được đặt trong dấu ngoặc nhọn {}.

      Khi câu lệnh for bắt đầu chạy, trước tiên câu lệnh sẽ kiểm tra xem giá trị của biến i có nhỏ hơn 10 hay không, nếu có thì thực hiện câu lệnh sau, sau đó quay lại kiểm tra i và dừng khi i không nhỏ hơn 10 . Vì vậy, chúng tôi đặt lệnh i = i + 1 trong vòng lặp và cứ sau mỗi lần lặp, giá trị của biến i sẽ được tăng thêm 1 cho đến khi i = 10 và sau đó vòng lặp for sẽ thoát ra.

      Đầu ra

      Chúng ta có thể đặt câu lệnh khai báo biến và lệnh tăng giá trị của biến trên một dòng như sau:

      for2.go

      Hầu hết các ngôn ngữ khác đều có nhiều câu lệnh lặp như while, do, until, foreach… nhưng go chỉ hỗ trợ một câu lệnh lặp for.

      câu lệnh if

      Bây giờ chúng ta thử in các số từ 1 đến 10 và xác định xem số đó là chẵn hay lẻ. Để làm điều này, chúng ta cần sử dụng câu lệnh if. Ví dụ:

      if.go

      Ở đây chúng ta sử dụng câu lệnh if để kiểm tra xem biến i có giá trị chẵn hay lẻ. Chúng ta viết câu lệnh if, theo sau là một biểu thức điều kiện (tức là kết quả phải đúng hoặc sai), sau đó là một khối câu lệnh được bao quanh bởi dấu ngoặc nhọn {}, sau đó chúng ta có thể có thêm câu lệnh if hoặc câu lệnh else.

      Nếu biểu thức điều kiện sau if là đúng thì thực hiện khối câu lệnh sau nó, nếu không thì tiếp tục kiểm tra xem biểu thức điều kiện tiếp theo có tồn tại hay không.

      Biểu thức điều kiện ở đây là câu lệnh i % 2 == 0, tức là ta kiểm tra xem i có chia hết cho 2 hay không (hoặc i không có số dư khi chia cho 2), nếu đúng thì i chẵn.

      Đầu ra

      Chuyển đổi lệnh

      Giả sử chúng ta muốn in các số trong từ, chúng ta có thể viết đoạn mã sau:

      Chúng ta có thể sử dụng câu lệnh switch thay cho câu lệnh if ở trên:

      Chúng ta sử dụng từ khóa switch, theo sau là biểu thức điều kiện, sau đó là danh sách các từ khóa case, mỗi từ khóa case có một giá trị cụ thể, sau đó là dấu hai chấm : và lệnh sẽ được thực thi.

      Ý nghĩa của câu lệnh switch là nếu biểu thức điều kiện trong câu lệnh switch khớp với giá trị trong từ khóa case thì câu lệnh sau sẽ được thực thi từ từ khóa case đó. Ngoài ra, ở đây chúng ta có từ khóa default, có tác dụng thực hiện câu lệnh nếu giá trị trong switch không khớp với bất kỳ từ khóa case nào. Bạn có thể tìm hiểu thêm tại đây: Nguồn: https://phocode.com/golang/go-lap-trinh-go/ Sách: https://www.golang-book.com/books/intro

Kiểm tra tiếng Anh trực tuyến

Bạn đã biết trình độ tiếng Anh hiện tại của mình chưa?
Bắt đầu làm bài kiểm tra

Nhận tư vấn lộ trình từ ACET

Hãy để lại thông tin, tư vấn viên của ACET sẽ liên lạc với bạn trong thời gian sớm nhất.