+4

Golang - ngôn ngữ lập trình mã nguồn mở giúp xây dựng ứng dụng dễ dàng, đáng tin cậy và hiệu quả.

1.Giới thiệu

  • Có một bài toán đau đầu dành cho các công ty là khi họ đã lên tới tầng scale cho một dự án. Thời gian đầu thì sẽ là optimize code, database, scale phần cứng… nhưng khi tới một lượng user cực lớn thì vấn đề đó sẽ càng ngày càng nan giải. Và giải pháp của một số công ty đó là chọn Go. Nó được thiết kế để có thể scale một hệ thống với số request lớn, có thể lên tới hàng triệu request/s. Thêm một lí do nữa là Go là một ngôn ngữ đơn giản, learning curve thuộc dạng dễ nhất trong các ngôn ngữ, vì thế chi phí để chuyển qua Go thấp. Ngoài ra còn một số tiêu chí: build time nhanh, chuẩn hóa code giữa các thành viên trong team bằng vô số tool xịn…Ngày nay khi phần cứng ngày càng phát triển, CPU đa nhân thì các ngôn ngữ theo concurrency model sẽ là xu hướng. Go là một trong số đó. Go không phải là một ngôn ngữ mạnh tuyệt đối. Concurrency Go sẽ không bằng Erlang, Clojure, về mức độ strong typed thì lại càng không thể so sánh với các ngôn ngữ functional như Haskell, Scala, về việc làm prototype nhanh thì không thể bằng Ruby hay Node. Nhưng lí do mọi người thích Go là vì nó support ở mức “vừa đủ xài” hay theo mọi người vẫn hay nói là “simple enough to build the world”.

2.Nguyên Lý thiết kế GoLang

  • Golang có cú pháp giống với C/C++, được phát triển tại Google năm 2007. Được sử dụng trong một số hệ thống sản phầm của Google. Nếu ai đã từng học qua C or C++ thì sẽ làm quen rất nhanh với GoLang thôi. =))

Nguyên lý thiết kế Golang:

  • Thời gian biên dịch nhanh

  • Hỗ trợ xử lý đồng thời: gorountines, channels,

  • Nhất quán, đơn giản, an toàn

  • Hỗ trợ Interface và Type Một số đặc trưng của Golang Method: Golang không có classes, nhưng nó cho phép định nghĩa method dựa trên các kiểu dữ liệu tự đinh nghĩa. Intefaces: định nghĩa tập hợp các phương thức sẽ thực thi.

  • Kiểu con trỏ - pointer: lưu địa chỉ bộ nhớ của biến

  • Xử lý đồng thời – concurrency: goroutine quàn lý thread trong Go runtime, goroutine giao tiếp với nhau thông qua channel. Example: một ví dụ kinh điển khi bắt đầu học một ngôn ngữ lập trình bất kì. 😄

    package main
    
    import "fmt"
    
    func main() {
       fmt.Println("Hello, World!")
    }
    

Ví dụ trên chỉ đơn giản in ra dòng chữ "Hello, World!". Qua ví dụ trên có thể thấy cú pháp của nó khá đơn giản và rất giống với C/C++. Có thể tham khảo thêm tại: https://golang.org/doc/code.html Hoặc : https://www.tutorialspoint.com/go/go_basic_syntax.htm

3.Beego Framework

  • Beego là HTTP framework cho phép phát triển nhanh trong các ứng dụng sử dụng ngôn ngữ Go.
  • Kiến trúc: bao gồm 8 module độc lập: cache, config, context, httplibs, logs, orm, session, toolbox.
  • Beego có kiến trúc MVC: sử dụng bee tool để generate project - Beego folder structure project mvc
  • The architecture of Beego 8 module độc lập bao gồm : cache, config, context, httplibs, logs, orm, session, toolbox. Ví dụ, bạn có thể sử dụng module cache để xử lý cache, module để ghi lại logs, và module config để xử lý tập tin cho nhiều định dạng... Để hiểu sâu hơn, các bạn có thể tham khảo tại: https://beego.me/docs/intro/

4.Sử dụng bee tool để tạo project

bee new quickstart
  • Output sẽ như sau:
➜  src  bee new quickstart
[INFO] Creating application...
/gopath/src/quickstart/
/gopath/src/quickstart/conf/
/gopath/src/quickstart/controllers/
/gopath/src/quickstart/models/
/gopath/src/quickstart/routers/
/gopath/src/quickstart/tests/
/gopath/src/quickstart/static/
/gopath/src/quickstart/static/js/
/gopath/src/quickstart/static/css/
/gopath/src/quickstart/static/img/
/gopath/src/quickstart/views/
/gopath/src/quickstart/conf/app.conf
/gopath/src/quickstart/controllers/default.go
/gopath/src/quickstart/views/index.tpl
/gopath/src/quickstart/routers/router.go
/gopath/src/quickstart/tests/default_test.go
  • Bee tool sẽ create project với structure:
  • Để run project: sử dụng command line như sau:
 src  cd quickstart
 quickstart  bee run

Chúc các bạn thành công. thank you. Tài liệu tham khảo: https://golang.org/doc/code.html https://beego.me/docs/intro/ https://www.tutorialspoint.com/go/index.htm


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí