Giới thiệu
Trong bài viết này, mình sẽ viết lại tất cả các kiến thức trong quá trình mình học. Get’s go!!!
Nội dụng
Khai báo biến
Ta có 3 cách khai báo biến:
1 2 3 4 5 6 7 8 9 | <span class="token number">1</span>. var <name> <type> => var one int; one = <span class="token number">1</span> <span class="token number">2</span>. var <name> = <value> => var one = <span class="token number">1</span> <span class="token number">3</span>. <name> <span class="token operator">:</span>= <value> => one <span class="token operator">:</span>= <span class="token number">1</span> |
Lưu ý: Cách khai báo 2 và 3 nên dùng ở trong một function, còn cách khai báo 1 ta thường dùng để khai báo biến global cho toàn bộ code.
Các biến được khai báo nhưng không có giá trị thì:
1 2 3 4 | <span class="token number">0</span> for numeric types<span class="token punctuation">,</span> <span class="token boolean">false</span> for the boolean type<span class="token punctuation">,</span> and <span class="token string">""</span> (the empty string) for strings. |
Sử dụng điều kiện if/else
1 2 3 4 5 6 7 8 | <span class="token keyword">if</span> <span class="token operator"><</span>condition expression<span class="token operator">></span> <span class="token punctuation">{</span> <span class="token comment">// implement code</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token operator"><</span>condition expression<span class="token operator">></span> <span class="token punctuation">{</span> <span class="token comment">// implement code</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> <span class="token comment">// implement code</span> <span class="token punctuation">}</span> |
If rút gọn:
1 2 3 4 5 6 7 | <span class="token keyword">func</span> <span class="token function">pow</span><span class="token punctuation">(</span>x<span class="token punctuation">,</span> n<span class="token punctuation">,</span> lim <span class="token builtin">float64</span><span class="token punctuation">)</span> <span class="token builtin">float64</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> v <span class="token operator">:=</span> math<span class="token punctuation">.</span><span class="token function">Pow</span><span class="token punctuation">(</span>x<span class="token punctuation">,</span> n<span class="token punctuation">)</span><span class="token punctuation">;</span> v <span class="token operator"><</span> lim <span class="token punctuation">{</span> <span class="token keyword">return</span> v <span class="token punctuation">}</span> <span class="token keyword">return</span> lim <span class="token punctuation">}</span> |
Các loại dữ liệu
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | bool string int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr byte <span class="token comment">// alias for uint8</span> rune <span class="token comment">// alias for int32</span> <span class="token comment">// represents a Unicode code point</span> float32 float64 complex64 complex128 |
Chuyển đổi loại dữ liệu
Biểu thức T(v) chuyển đổi giá trị v thành kiểu T.
1 2 3 4 | var i int = 42 var f float64 = float64(i) var u uint = uint(f) |
hoặc
1 2 3 4 | i := 42 f := float64(i) u := uint(f) |
Nếu như chúng ta khai báo :=
như thế này thì kiểu dữ liệu sẽ dựa vào value của biến đó:
1 2 3 4 | i := 42 // int f := 3.142 // float64 g := 0.867 + 0.5i // complex128 |
Khai báo hàm
Một hàm có thể nhận 0 hoặc nhiều đối số.
Hàm Trả về 1 giá trị:
1 2 3 4 | func add(x int, y int) int { return x + y } |
Hàm trả về nhiều giá trị:
1 2 3 4 | func add(x , y int) (int, int) { return x, y } |
Vòng lặp For
For:
1 2 3 4 5 | sum <span class="token operator">:=</span> <span class="token number">0</span> <span class="token keyword">for</span> i <span class="token operator">:=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator"><</span> <span class="token number">10</span><span class="token punctuation">;</span> i<span class="token operator">++</span> <span class="token punctuation">{</span> sum <span class="token operator">+=</span> i <span class="token punctuation">}</span> |
Continue:
1 2 3 4 5 | sum <span class="token operator">:=</span> <span class="token number">1</span> <span class="token keyword">for</span> <span class="token punctuation">;</span> sum <span class="token operator"><</span> <span class="token number">1000</span><span class="token punctuation">;</span> <span class="token punctuation">{</span> sum <span class="token operator">+=</span> sum <span class="token punctuation">}</span> |
While:
1 2 3 4 5 | sum <span class="token operator">:=</span> <span class="token number">1</span> <span class="token keyword">for</span> sum <span class="token operator"><</span> <span class="token number">1000</span> <span class="token punctuation">{</span> sum <span class="token operator">+=</span> sum <span class="token punctuation">}</span> |
Nếu bạn bỏ qua điều kiện vòng lặp, nó sẽ lặp mãi mãi.
1 2 3 | <span class="token keyword">for</span> <span class="token punctuation">{</span> <span class="token punctuation">}</span> |
Switch
Có điều kiện:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <span class="token keyword">import</span> <span class="token punctuation">(</span> <span class="token string">"fmt"</span> <span class="token string">"runtime"</span> <span class="token punctuation">)</span> <span class="token keyword">switch</span> os <span class="token operator">:=</span> runtime<span class="token punctuation">.</span>GOOS<span class="token punctuation">;</span> os <span class="token punctuation">{</span> <span class="token keyword">case</span> <span class="token string">"darwin"</span><span class="token punctuation">:</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span><span class="token string">"OS X."</span><span class="token punctuation">)</span> <span class="token keyword">case</span> <span class="token string">"linux"</span><span class="token punctuation">:</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span><span class="token string">"Linux."</span><span class="token punctuation">)</span> <span class="token keyword">default</span><span class="token punctuation">:</span> <span class="token comment">// freebsd, openbsd,</span> <span class="token comment">// plan9, windows...</span> fmt<span class="token punctuation">.</span><span class="token function">Printf</span><span class="token punctuation">(</span><span class="token string">"%s.n"</span><span class="token punctuation">,</span> os<span class="token punctuation">)</span> <span class="token punctuation">}</span> |
Không có điều kiện:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <span class="token keyword">import</span> <span class="token punctuation">(</span> <span class="token string">"fmt"</span> <span class="token string">"time"</span> <span class="token punctuation">)</span> t <span class="token operator">:=</span> time<span class="token punctuation">.</span><span class="token function">Now</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">switch</span> <span class="token punctuation">{</span> <span class="token keyword">case</span> t<span class="token punctuation">.</span><span class="token function">Hour</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator"><</span> <span class="token number">12</span><span class="token punctuation">:</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span><span class="token string">"Good morning!"</span><span class="token punctuation">)</span> <span class="token keyword">case</span> t<span class="token punctuation">.</span><span class="token function">Hour</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator"><</span> <span class="token number">17</span><span class="token punctuation">:</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span><span class="token string">"Good afternoon."</span><span class="token punctuation">)</span> <span class="token keyword">default</span><span class="token punctuation">:</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span><span class="token string">"Good evening."</span><span class="token punctuation">)</span> <span class="token punctuation">}</span> |
Defer
Defer là 1 tính năng của Go, cho phép gắn 1 hàm để thực hiện sau khi hàm chính hoàn thành.
1 2 3 4 5 6 7 8 | <span class="token keyword">import</span> <span class="token string">"fmt"</span> <span class="token keyword">func</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">defer</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span><span class="token string">"world"</span><span class="token punctuation">)</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span><span class="token string">"hello"</span><span class="token punctuation">)</span> <span class="token punctuation">}</span> |
Stacking defers: là các hàm được gọi nhưng chưa được thực hiện và bị đẩy lên stack. Khi hàm chính hoàn thành, các hàm chưa thực hiện nó sẽ được chạy theo thứ tự LIFO ( Last-in-First-out ).
1 2 3 4 5 6 7 8 9 10 11 12 | <span class="token keyword">import</span> <span class="token string">"fmt"</span> <span class="token keyword">func</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span><span class="token string">"counting"</span><span class="token punctuation">)</span> <span class="token keyword">for</span> i <span class="token operator">:=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator"><</span> <span class="token number">10</span><span class="token punctuation">;</span> i<span class="token operator">++</span> <span class="token punctuation">{</span> <span class="token keyword">defer</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span>i<span class="token punctuation">)</span> <span class="token punctuation">}</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span><span class="token string">"done"</span><span class="token punctuation">)</span> <span class="token punctuation">}</span> |
Tổng kết
Vậy là sau 1 ngày mình đã học được:
- cách khai báo biến
- câu lệnh if/else
- các kiểu dữ liệu
- khai báo hàm.
- Vòng lặp For
- Switch
- Defer, Stacking Defer
Cám ơn các bạn đã theo dõi bài viết của mình. Chúc các bạn 1 ngày vui vẻ. Tks