Hướng dẫn dùng php course trong PHP

Giới thiệu

Xin chào các bạn, mình thì chủ yếu lập trình web bằng PHP thôi, nhưng dạo gần đây mình tự dưng phải học Go =]] Vâng, cái tên Go chắc hẳn cũng khá nổi tiếng rồi, thực ra mình đã muốn học từ lâu nhưng chưa bao giờ gọi là có thời gian để học nghiêm túc. Giờ cờ đã đến tay ngại gì không thử

Go nổi tiếng là vì được thiết kế, phát triển tại Google, bởi các lập trình viên nổi tiếng Ken Thompson, Rob Pike và Robert Griesemer vào năm 2007. Và vì nó liên quan đến khá nhiều phần mềm, tool chúng ta sử dụng hàng ngày như Docker, Kubernetes, Traefik Proxy, Drone CI, Caddy Server, Hugo, Gogs Git service, Influxdb... chủ yếu là các phần mềm hệ thống, cli tool, server, infrastructure, các hệ thống backend cần hiệu năng, tốc độ xử lý cao. Có một sự thật hơi hack đó là source code của Go cũng được viết bằng... Go??

Go được ra đời với mục đích là kết hợp được sự mềm dẻo của các ngôn ngữ thông dịch, dynamic type với hiệu năng và sự an toàn của các ngôn ngữ biên dịch, static type, và tận dụng được kiến trúc CPU đa nhân trên các máy tính hiện đại để xử lý tính toán song song, đồng thời.

Go là một ngôn ngữ biên dịch như C/C++, Java,… Nhưng có 1 điểm khác biệt có thể coi là điểm mạnh của Go đó là crosss-compiling, tức là compile cho nhiều nền tảng kiến trúc hay OS khác nhau mà không cần sử dụng OS đó, ví dụ bạn code Go trên Linux nhưng có thể build ra file thực thi [static binary hay executable file] chạy được trên cả Windows và Mac, chỉ cần download về và chạy trực tiếp, không phải config, compile lại trên từng platform như C/C++ nữa. Điều này cũng thúc đẩy sự ra đời của hàng loạt các công cụ, CLI tool phục vụ cho DevOps hay System Admin. Ví dụ, khi làm web chúng ta hay có chức năng gửi email, nguyên tắc là không được dùng các hệ thống mail thật để test vì có thể để lộ thông tin dự án, hoặc code lỗi dẫn đến spam user... nên thường phải có một mail server giả lập để gửi và nhận mail như MailCatcher nhưng vấn đề là mình làm PHP, giờ lại phải cài cả Ruby vào để chạy MailCatcher thì rắc rối quá, giải pháp thay thế đó là MailHog, chỉ cần download từ Github về và run...

Triết lý thiết kế của Go đó là đưa ra một solution tốt nhất chứ không phải đưa ra nhiều lựa chọn, chẳng hạn sẽ chẳng có kế thừa, chẳng có toán tử điều kiện 3 ngôi [như ?:, ?? như PHP] mà chỉ cần if/else là đủ, cũng không cần các chuẩn code convention PSR 1, 2 như PHP mà Go cung cấp luôn công cụ để format code và chỉ cần 1 format là đủ, cũng chẳng cần đến các chuẩn về autoloading PSR 0, 4 như PHP mà Go quy định luôn cấu trúc folder để source code...

Go cũng có nhiều framework phục vụ cho việc phát triển Web, API như PHP. Nói chung PHP làm được gì thì Go cũng làm được. Nhưng nói về Web thì vẫn chưa được phổ cập như PHP. Go có stop được ElePHPant không =]]

Bắt đầu

Hello World

Mở bài có vẻ dài rồi, tiếp theo chúng ta sẽ đi vào làm quen với cú pháp của Go. Ở giai đoạn làm quen này, để mọi thứ đơn giản chúng ta sẽ sử dụng website Go Playground //play.golang.org/ để thực hành luôn mà không cần phải cài cắm thêm gì cả. Chương trình đơn giản đầu tiên nó trông như thế này và lại là Hello World?!

package main

import "fmt"

func main[] {
	fmt.Println["Hello Gophers' World!"]
}

Nếu viết bằng PHP thì sẽ là:

namespace Main;

use Some\Library\Format;

function main[] {
    Format::println["Goodbye World!!!"];
}

main[];

Đây là mình chủ viết cho giống kiểu của Go, chứ thực ra chỉ cần

Chủ Đề