Open in app

Sign in

Write

Sign in

Gary Liao
Gary Liao

88 Followers

Home

About

Jun 17

Golang Workspace

多模組的救星 概述 Go 1.18 推出了 workspace ,成為官方主推的開發方式,可以方便地同時編輯、編譯、執行多個模組組成的程式 (其實是之前太不方便了)。 現在的專案結構大概長這樣: 一個 workspace 資料夾下可以有多個 module 資料夾。 workspace 資料夾中有個 go.work 來定義底下哪些是要用的 modules。 module 資料夾中有 go.mod ,定義 module 使用哪些其他的 modules …

Golang

4 min read

Golang Workspace
Golang Workspace
Golang

4 min read


Jun 12

Golang GORM

牽線木偶 前言 GORM 是 Golang 操作資料庫的第三方套件,主打 ORM (Object Relational Mapping),光是命名就覺得成大器。 撇開GO不談,身為一個曾經寫Python的分析師,第一次碰到 SqlAlchemy (也是一個實現 ORM 的資料庫包) ,覺得 ORM 好酷,隱含物件導向,我要昇華了… 怪了,我沒昇華,反而查 …

Golang

22 min read

Golang GORM
Golang GORM
Golang

22 min read


Jun 8

Go os.exec 執行外部指令

執行外部指令 我將 Go 執行外部指令分為三個階段: 設定主要指令 使用下面兩個function 設定主要指令 exec.Command : 一個指令名稱與多個參數 exec.CommandContext : 類似上面,但開頭帶入一個 context // 執行一個指令,把輸入的小寫英文改為大寫英文書出 cmd := exec.Command("tr", "a-z", "A …

Golang

2 min read

Golang

2 min read


Jun 7

Go context

核心是個 channel 概述 context package 是 Go 1.7 版推出的套件,用於程序間傳遞截止時間 (deadlines)、 取消訊號 (cancellation signals), 以及其他(比方說API查詢時)所帶的值 (request-scoped values)。 這件事情不是不能靠 channel 做到,況且 context pa …

Go

5 min read

Go context
Go context
Go

5 min read


Jun 6

Go 初始化

神說有光就有光 本篇介紹兩種 Go 做初始化的方式。 init() 作為初始化的工具,任何 .go 檔案裏面都可以有複數個 init() ,執行順序從上到下;任何package被import的時候都會依照import 的順序被初始化一次,main package 最後初始化。 package main import ( "fmt" ) var a, b int …

Go

3 min read

Go 初始化
Go 初始化
Go

3 min read


Jun 6

Go Mutex 互斥鎖

Mutual Exclusion 互斥鎖 Mutual Exclusion (Mutex),中文翻為互斥鎖,雖然可以透過 channel 達到這個功能,但 Go 官方提供了 sync.Mutex 以利使用。 sync.Mutex var mu, mu1, mu2 sync.Mutex // 不用初始化就能用了 mu.lock() mu.unlock() // 很少用,用 …

Go

4 min read

Go Mutex
Go Mutex
Go

4 min read


Jun 6

Goroutines and OS Threads

Goroutines 不是系統執行序 前篇提到 Goroutines 是輕量的執行序,但又不同,究竟哪裡不同? OS threads 系統執行序 OS threads 有固定大小的記憶體 (2MB),作為執行序的 stack,用於系統切換執行序時暫存local variables。 這個大小非常尷尬,對小程序太大,對大程序太小。 系統有個 kernel function 叫做 schedul …

Go

2 min read

Goroutines and OS Threads
Goroutines and OS Threads
Go

2 min read


Jun 5

Goroutine & Go Channel

GO執行序與通道 前言 Go 提供了兩種平行運算的方式: communicating sequential processes (CSP) shared memory multithreading 本篇介紹 Go 實現 CSP 的方式,就是用使用 channels 在 goroutines 之間溝通。而 shared memory multithreading, …

Go

16 min read

Goroutine & Go Channel
Goroutine & Go Channel
Go

16 min read


May 31

Go Switch

Go 語言中,switch 分兩類: Expression switches: 比對 values Type switches: 比對 types 後面的 case 概念與大多數的語言類似,從上比到下,有default。 Expression switches // compare with x switch x { // cases } // initialized x first, …

Go

3 min read

Go

3 min read


May 31

Go Defer

推遲 概述 defer <function call> 陳述式可以進行 function call,但被 call 的 function 會推遲到外層 function returns 時才執行。 在許多情境下,他可以充當 Golang 實現解構子的工具,但 defer 的彈性更大。 特性 被推遲的function,我們稱為 deferred func …

Go

5 min read

Go

5 min read

Gary Liao

Gary Liao

88 Followers

我很忙,一秒鐘幾十萬上下。

Following
  • Harini Janakiraman

    Harini Janakiraman

  • 蕭瑟寡人

    蕭瑟寡人

  • Sally Y.C. Yang

    Sally Y.C. Yang

  • Taipei SalsaMates

    Taipei SalsaMates

  • Ta-Chuan Chuang

    Ta-Chuan Chuang

See all (32)

Help

Status

About

Careers

Blog

Privacy

Terms

Text to speech

Teams