Thử playaround Golang. A Tour of Go (Basics)
Golang - được Google giới thiệu vào năm 2009, nhưng dạo gần đây được cải thiện để nổi lên như là 1 ngôn ngữ Serverside hàng đầu do có những ưu thế về tốc độ xử lý, hiệu năng tính toán.
1 nguyên nhân khiến Go nổi lên cũng có thể do thời gian gần đây định luật Moore đã không còn đúng đắn nữa, với tốc độ phát triển của vi xử lý không còn nhanh như trước nữa, do đó những ngôn ngữ tính toán hiệu năng cao sẽ dần lên ngôi.
Nhắc lại chút về định luật Moore: "Số lượng transistor trên mỗi đơn vị inch vuông sẽ tăng lên gấp đôi sau mỗi năm."
Thế nên phải tìm hiểu coi thằng Golang này có gì hay. Cũng chỉ là note lại từ hàng chính chủ GoTour
Packages
- Mọi chương trình Go đều được tạo bởi package
- Chương trình start được đặt trong package
main
package main
import (
"fmt"
"math/rand"
)
func main() {
fmt.Println("Hello World")
}
Imports
- Dùng từ khoá
Import
Exported names
- Trong Go, dị cái là những cái tên được export thì theo chuẩn viết hoa chữ cái đầu. VD:
math.Pi
package main
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.Pi)
}
Functions
- Cũng tương tự nhiều ngôn ngữ khác
package main
import "fmt"
func add(x int, y int) int {
return x + y
}
func main() {
fmt.Println(add(42, 13))
}
- Tuy nhiên khi 2 tham số có cùng kiểu thì có thể viết ngắn lại, thay vì
x int, y int
có thể
x, y int
package main
import "fmt"
func add(x, y int) int {
return x + y
}
func main() {
fmt.Println(add(42, 13))
}
Multiple results
- 1 function có thể trả về nhiều kết quả, cái này có vẻ tương tự cái
tuple
của Swift
package main
import "fmt"
func swap(x, y string) (string, string) {
return y, x
}
func main() {
a, b := swap("hello", "world")
fmt.Println(a, b)
}
Variables
- Biến được khai báo với
var
và type ở cuối
package main
import "fmt"
var c, python, java bool
func main() {
var i int
fmt.Println(i, c, python, java)
}
- Biến cũng có thể được khởi tạo lúc khai báo, và nó định kiểu dựa vào dữ liệu khởi tạo.
package main
import "fmt"
var i, j int = 1, 2
func main() {
var c, python, java = true, false, "no!"
fmt.Println(i, j, c, python, java)
}
- Biến còn có thể khai báo tắt với
:=
khi ở trong function. Ngoài function thì không thể
package main
import "fmt"
func main() {
var i, j int = 1, 2
k := 3
c, python, java := true, false, "no!"
fmt.Println(i, j, k, c, python, java)
}
basic types
bool
string
int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
byte // alias for uint8
rune // alias for int32
// represents a Unicode code point
float32 float64
complex64 complex128
Zero values
- Các giá trị Zero ở đây là
- Số 0 với Numeric
- false với Boolean
- "" với String
Type conversions
- Expression T(v) chuyển kiểu của v sang T
var i int = 42
var f float64 = float64(i)
var u uint = uint(f)
Type inference
- Khi không chỉ định rõ type lúc khai báo biến, thì type của biến sẽ được gán theo giá trị nằm bên phải
var i int
j := i // j is an int
- Hoặc khi khai báo biến thì tuỳ vào độ chính xác của giá trị khai báo để định kiểu
i := 42 // int
f := 3.142 // float64
g := 0.867 + 0.5i // complex128
Constants
- Khai báo cũng giống biến, nhưng thay
var
bằngconst
- Không thể khai báo với
:=
Kết luận
- Tìm hiểu mới ở mức cơ bản, Golang có vẻ cũng fun, bài sau sẽ tìm hiểu thêm các thành phần khác.
- Syntax đẹp đẽ, không ; cuối câu, ít từ khoá nên cũng dễ nhớ
- IDE support tốt, cộng đồng đang ngày càng phát triển