iT邦幫忙

2021 iThome 鐵人賽

DAY 20
0

Python 改學 Go 之 基礎語法小筆記

學習計畫因為聽到公司用 Go 而改為學 Go,
翻閱一些教學文決定參考鐵人賽的文章~
主要想參考的系列:

一樣是自己的筆記,會省略我知道或不想記的東西,對別人應該沒什麼參考價值。
明天從 day7 - 指標 繼續看下去。

宣告賦值

  • 靜態型別
  • 只要有宣告,就會填上那個型別的預設值,不像 C 沒初始化會吃到髒東西
  • 宣告 + 賦值
var i1, i2, i3 int

var (
	i4 int = 1000
	s string = "meow"
	bool_arr []bool
)

// function type, return bool
var meow func() bool

// just like Python (;
var a, b = 1, "string"
  • :=
    local1, local2 := 1, 2 既可宣告又可賦值,還不用寫 var。
    只能在 function 裡面用

string

  • 沒有字元,但有 string,字元其實是用整數來表示,然後給個 alias 叫 byte 和 rune
var ascii byte = 'I'
var utf8 rune = 'E'

%T 印出型別,例如 fmt.Printf("%d %T \n", ascii, ascii)
可以知道 byte 是 uint8 的別稱,rune 則是 int32

  • 多行 string 用 ` (backtick)
    manystrings := `meow
this is cool`

不過不能縮排因為從第一行到第二行中間的空格都會被印出來

const

  • keyword iota 很酷
type Hero int

const (
    IronMan Hero = iota*2 + 1
    DrStrange
    Thor
    Hulk
)

fmt.Println(IronMan, DrStrange, Thor, Hulk)
// 印出: 1 3 5 7

function

  • First-class citizen!!
    可定義一個 function 變數然後傳 function,但 function definition 要對。
func myfunc(v1, v2 int) int {
    //....
}
var func_var func(a, b int) int
func_var = myfunc
  • 可以命名回傳值,回傳時就不用特別寫
func addAndMinus(a, b int) (c int, d int) {
	c = a + b
	d = a - b
	return
}
  • 匿名函式
// foo函式接收2個整數和一個函式變數
func foo(a, b int, f func(a, b int) int) int {
	return f(a, b)
}

func main() {
	var add = func(a, b int) int {
		return a + b
	}

	a := foo(1, 2, add)
	fmt.Printf("%d\n", a)
	// 印出: 3
}

條件判斷 if / switch

  • else if
  • if 條件之前還可以寫一個 expression(有夠怪)
    if myAge = myAge - 15; myAge < 20 {....略
    也可以:=宣告新變數,雖然不知道能用在哪
    if myAge := 30; myAge < 20 {....略
  • switch case 一個 case 可以多值!
flag := 1
switch flag {
case 0, 1:
    fmt.Println("Zero - First")
case 2, 3, 4:
    fmt.Println("Second - Four")
default:
    fmt.Println("Other")
}

for

  • 沒有 while 怪怪怪
  • 用 for 做 while 的事
    for i < 10 { i++ }
    for {} 無窮迴圈 (while True:)

goto

有 goto ㄋ


上一篇
【Day 19】瞄瞄 Python 標準函式庫
下一篇
【Day 21】Go 基礎小筆記 II(pointer / array / slice / map / struct)
系列文
什麼都不會還敢說你是 RD 啊?畢業後的後端入職前準備31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言