iT邦幫忙

golang相關文章
共有 1016 則文章
鐵人賽 自我挑戰組 DAY 23

技術 [Day 23] Mock DB for testing HTTP API in Go and achieve 100% coverage Part 2

Generate mock DB 既然我們已經有了 db.Store interface,我們可以使用 gomock 生成 mock interface。...

鐵人賽 自我挑戰組 DAY 22

技術 [Day 22] Mock DB for testing HTTP API in Go and achieve 100% coverage Part 1

Why mock database? 當談到APIs 的測時,有些人可能選擇連接到真實的資料庫,而有些人則認為使用 mocking 較好,原因如下: 首先,...

鐵人賽 SideProject30 DAY 22

技術 Day22 繞過 Google OAuth 在 User Agent 上的使用限制

這幾天我們都是透過電腦版的Line來做測試,但是如果是使用手機版的話,會發現當我們點擊Google OAuth的URL要進行認證授權的時候,雖然前面的步驟都一切...

鐵人賽 自我挑戰組 DAY 30
Go in 3o 系列 第 30

技術 [Day30] Go in 30 - 系統與檔案 - 檔案讀取與寫入

一、 本篇提要 接下來會說明檔案的建立、和寫入,在此之前會需要先了解什麼是檔案權限。 檔案存取權限 建立與寫入檔案 os.OpenFile() 二、檔案存取...

鐵人賽 自我挑戰組 DAY 29
Go in 3o 系列 第 29

技術 [Day29] Go in 30 - 系統與檔案 - flag 與 signals

一、本篇題要 這個主題將了解系統與檔案,像是介紹多種讀寫純文字檔和CSV格式檔案的方式,以及檔案的存取權限。我們會實作一個命令列應用程式,可以接收各種 flag...

鐵人賽 自我挑戰組 DAY 21

技術 [Day 21] Load Config in Go with viper

Why file and environment variables ? 當開發和部署後端網頁應用時,我們通常需要為不同的環境使用不同的配置,例如開發、測試、...

鐵人賽 自我挑戰組 DAY 22
Concurrency in go 讀書心得 系列 第 22

技術 22.Context

在併發程式中,由於連接超時、使用者取消或系統故障,往往需要執行搶佔操作。過去,我們利用 done 通道在程式中取消所有阻塞的並發操作,儘管這方法有其效用,但確實...

鐵人賽 Modern Web DAY 23
起步Go!Let's Go! 系列 第 23

技術 [ Day 23 ] Go 模板引擎:動態生成 HTML 頁面的魔法

在昨天的練習中,當我們使用 GET 請求時,並成功得到網站中的資料,我們都用是終端機查看回傳的資訊,雖然一樣可以達到查看資料的目的,但好像缺少了什麼!!這就不得...

鐵人賽 SideProject30 DAY 21

技術 Day21 Drive Service - 取出OAuth Token操作Drive

今天一開始我們先來調整一下我們之前對Expiry宣告的類型,昨天仔細看發現oauth官方的Token(oauth2.Token)結構如下: type Token...

鐵人賽 SideProject30 DAY 20

技術 Day20 Login Service - OAuth Token存到Dynamodb

開始之前我們調整一下之前在adapter\google\oauth.go的OAuthLoginURL(),把原本寫死的第一個參數”state-token”改...

鐵人賽 自我挑戰組 DAY 28
Go in 3o 系列 第 28

技術 [Day28] Go in 30 - 處理JSON資料

一、本篇提要 本篇重點會著重於Go如何解析JSON,以及了解Go自有的 gob 二進位編碼功能。 解碼JSON為Go結構 將Go結構編碼為JSON 二、解碼...

鐵人賽 自我挑戰組 DAY 27
Go in 3o 系列 第 27

技術 [Day27] Go in 30 - 時間處理

一、本篇提要 本篇開始介紹Go中的time套件,時間處裡是Go程式的核心之一,time套件官方文件 建立時間資料 時間值的格式化 時間值的管理 時間值的比較與...

鐵人賽 Modern Web DAY 22
起步Go!Let's Go! 系列 第 22

技術 [ Day 22 ] GO 創建簡單的用戶端:踏上與伺服器對話的征途

在現代應用程式中,用戶端和伺服器之間的通信是不可或缺的一部分。Go 的強項之一是其在構建網路應用程序方面的表現。今天,我們將深入研究如何使用 Go 語言創建一個...

鐵人賽 自我挑戰組 DAY 26
Go in 3o 系列 第 26

技術 [Day26] Go in 30 - Debug - 單元測試(unit test)

一、本篇提要 最後要來看Go程式撰寫簡單的單元測試,並使用 go test 來替我們測試函式與套件。這次我們會沿用之前的shape程式範例,並稍作改寫。 二、撰...

鐵人賽 自我挑戰組 DAY 20

技術 [Day 20] Implement RESTful in GO using Gin Part 3

Implement get account API 在server.go 的NewServer中加入 getAccount 的router Path...

鐵人賽 SideProject30 DAY 19

技術 Day19 調整SSM+補用testify測試

昨天我們在server.go的地方會發現,要去調用SSM的地方,因為是一個一個參數去查,參數一多看起來就會很混亂,像下面這樣。 如果我們能一次性地去查詢,應該...

鐵人賽 自我挑戰組 DAY 21
Concurrency in go 讀書心得 系列 第 21

技術 20.Queue

我們在之前的章節列舉了Pipeline(管道)的各種優點,但有時候,盡管管道沒有準備好,我們的程序依然還是要幹活的,這種處理方式,被稱為“Queue”(隊列)。...

鐵人賽 自我挑戰組 DAY 20
Concurrency in go 讀書心得 系列 第 20

技術 20.The bridge-channel

在某些情況下,你可能會發現自己想要使用一系列通道的值: <-chan <-chan interface{} 這與將某個通道的數據切片合併到一個通道...

鐵人賽 自我挑戰組 DAY 25
Go in 3o 系列 第 25

技術 [Day25] Go in 30 - Debug

一、本篇提要 接下來要介紹的是Go的除錯基本方法,將會介紹到格式化訊息、log、單元測試(unit test)。 以 fmt 套件做格式化輸出 使用log...

鐵人賽 自我挑戰組 DAY 24
Go in 3o 系列 第 24

技術 [Day24] Go in 30 - 套件(package) - 第三方模組或套件

一、 本篇提要 如果我們需要使用網路上別人公開的套件,可用 go get 指令下載它到系統中 $GOPATH\pkg\mod 位置。有需要時就使用 go mod...

鐵人賽 自我挑戰組 DAY 19

技術 [Day 19] Implement RESTful in GO using Gin Part 2

Implement create account API 在server.go 的NewServer中加入 createAccount 的router s...

鐵人賽 SideProject30 DAY 18

技術 Day18 GoogleDrive API 04

我們仔細看昨天的流程會發現,要調用Google Drive之前一定要先拿使用者的token去建立*http.Client然後再交給drive.NewServic...

鐵人賽 自我挑戰組 DAY 22
Go in 3o 系列 第 22

技術 [Day22] - Go in 30 - 泛型(generic)

一、本篇提要 承接前篇泛型 基本泛型概念 泛型應用示範 二、基本泛型 2.1 基本泛型概念: Type Parameter:作為佔位符存在的一個型別,用...

鐵人賽 自我挑戰組 DAY 21
Go in 3o 系列 第 21

技術 [Day21] - Go in 30 - 介面 - 型別斷言(type assertion)

一、本篇提要 型別斷言(type assertion) 斷言與switch 二、型別斷言 在 Golang 中,所有型別都實現了 interface{} 這...

鐵人賽 自我挑戰組 DAY 19
Concurrency in go 讀書心得 系列 第 19

技術 19.Tee-channel

有時候你可能想分割來自通道的多個值,以便將它們發送到兩個獨立區域。想像一下:你可能想要在一個通道上接收一系列操作指令,將它們發送給執行者,同時記錄操作日志。與U...

鐵人賽 SideProject30 DAY 17

技術 Day17 GoogleDrive API 03

今天我們把的範例整理一下,首先先把操作Google Cloud的部分移到adapter 首先,我們在adapter建立資料夾google,並建立oauth....

鐵人賽 自我挑戰組 DAY 23
Go in 3o 系列 第 23

技術 [Day23] Go in 30 - 套件(package) - 簡介

一、本篇提要 本篇要示範的是,Go語言運用套件的重要性,並說明如何讓程式更好維護、更有組織等,在這個主題之下將理解,套件如何定義、套件內名稱匯出方式、替套件建立...

鐵人賽 自我挑戰組 DAY 20
Go in 3o 系列 第 20

技術 [Day20] Go in 30 - 介面 - 泛型(generic)

一、本篇介紹 泛型 generic 型別斷言 type assertion 與 switch 什麼時候該用泛型 ? 二、泛型 generic 其實inter...

鐵人賽 自我挑戰組 DAY 18

技術 [Day 18] Implement RESTful in GO using Gin Part 1

Go web frameworks and HTTP routers 雖然我們可以使用標準的**net/http**套件來實現這些API,但使用現有的網頁框架會...

鐵人賽 自我挑戰組 DAY 19
Go in 3o 系列 第 19

技術 [Day19] Go in 30 - 介面 - 在函式中活用介面

一、本篇提要 以介面為參數的函式 以介面為回傳值的函式 判斷要不要使用介面作為傳回值 空介面 二、以介面為參數的函式 本篇會透過 io.Reader 為例,...