iT邦幫忙

golang相關文章
共有 1016 則文章
鐵人賽 Software Development DAY 9

技術 Day9 - Interface: 為什麼nil接口不等於nil?

Interface 是 Go 這門靜態語言中具有「動靜兼備」特性的語法元素。它既展示了 Go 的強大表達能力,也經常讓初學者感到迷惑。為了釐清這些迷惑,本文將深...

鐵人賽 Software Development DAY 8

技術 Day8 - Interface即類型的使用定義

在 Go 語言中,interface 是一組方法的集合,透過 type 和 interface 關鍵字來定義。這些方法的集合唯一確定了這個 interface...

鐵人賽 Software Development DAY 7

技術 Day7 - Method: 怎麼用變數模擬繼承

Go 語言的繼承與組合 Go 語言沒有像 C++/Java 等語言可以透過 extend 關鍵字來繼承某個 class。因此,Go class的所有方法都是自己...

鐵人賽 Software Development DAY 6

技術 Day6 - Method: Method與如何選擇Receiver類型

和多數程式語言一樣,在 Go 語言中,我們需要考慮如何設計方法。由於在 Go 語言中,方法本質上就是函數,所以我們之前講解的關於函數設計的內容同樣適用於方法,例...

鐵人賽 Software Development DAY 5

技術 Day5 - Defer的妙用 - 跟蹤函數調用鏈

在 Go 語言中,defer 關鍵字是一個強大而且實用的工具,能讓你更優雅地處理資源釋放和一些在函數結束前必須執行的清理工作。本文將通過生動的比喻和簡單的示例,...

鐵人賽 Software Development DAY 4

技術 Day4 - 搞清楚Go語言的生命週期

在剛開始學習 Go 語言的時候,我們可能經常會遇到這樣一個問題:一個 Go 專案中有數十個 Go packages,每個package中又有若干常數、變數、各種...

鐵人賽 Modern Web DAY 1

技術 【Day01】序章 | 什麼是 GO ? 和其他現代語言相比又是如何?

前言 很高興今年又能夠報名鐵人賽的活動,那今年一樣是以完賽為目標邁進!去年我寫的是前端,那今年就來挑戰寫後端吧!先說說自己對前後端的感受好了,我覺得前端能夠讓我...

鐵人賽 Software Development DAY 3

技術 Day3 - 一個Go的程式專案是怎麼樣的

我們編寫的 Go 程式一般都是簡單程式,一般由一個或幾個 Go 原始碼檔案組成,而且所有原始碼檔案都在同一個目錄中。但是生產環境中運行的程式可不會這麼簡單,通常...

鐵人賽 Software Development DAY 1

技術 Day1 開篇 - Go語言設計與架構之美

當你首次接觸 Go 語言時,可能會被它的簡潔、直觀所吸引,重點是,他還是編譯式語言,速度快、可執行文件小、開發也很快、還有很多第三方Library可以使用。然而...

技術 Excelize 釋出 2.8.1 版本,2024 年首個更新

Excelize 是 Go 語言編寫的用於操作 Office Excel 檔案基礎庫,基於 ECMA-376,ISO/IEC 29500 國際標準。可以使用它...

技術 gorm的Find跟Scan

gorm的Find跟Scan 筆者在使用gorm時通常都習慣用Find,不過最近因為在查找gorm的官網時意外看到Scan的用法,就好奇查了一下他們有什麼不同,...

技術 [Day 30] How to write stronger unit tests with a custom go-mock matcher

Object 我們將學習如何撰寫自定義的 gomock matcher,以增強我們Golang單元測試的強度。 Weak Unit Test for User...

技術 [Day 29] How to securely store passwords?

How to store password Table users as U { username varchar [pk] hashed_passwo...

技術 [Day 28] How to handle DB errors in Golang correctly

Generate User Creation and Retrieval Code 步驟1: 建立 user.sql 檔案 在db/query資料夾中創建一個...

技術 [Day 27] Add users table with unique & foreign key constraints in PostgreSQL

Intro 目前,我們已為簡易銀行系統實現了多項功能,包括創建、更新、檢索或轉賬等,然而,還缺少一個非常重要的功能:user authentication 和...

鐵人賽 SideProject30 DAY 30

技術 Day30 為Button補上對應的功能

最後一天,我們來為Button增加對應的功能,目前有的按鈕有兩種,一種是[進入資料夾],一種是[設為上傳路徑]。 那我們就先從[進入資料夾]開始,我們要製作進入...

鐵人賽 SideProject30 DAY 29

技術 Day29 Drive Service - 用Google Drive API取資料建立Carousel

我們昨天完成了整個組合Carousel的部分,今天來把資料來源換成從Google Drive API取得。 首先,我們先看一下需要哪些資料 type New...

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

技術 30.完賽心得

這一次鐵人賽終於順利結束了,在過去的三十天中,我們藉由concurrency in go這本書深入研究了Golang的併發編程,探討了併發的基本概念、Gorou...

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

技術 29.Healing unhealthy goroutines

在一些長時間運行的系統中,如守護進程(Daemon process),經常有一些常駐的子程序,名為goroutines。這些goroutines有時會因外部資源...

鐵人賽 SideProject30 DAY 28

技術 Day28 用Go動態組合Flex Message 02

昨天我們完成了組成一個Bubble需要的4個區塊,今天我們透過這4個區塊把Bubble組起來,然後再用Bubble把Carousel組合起來,就可以回傳給Dri...

鐵人賽 SideProject30 DAY 27

技術 Day27 用Go動態組合Flex Message 01

昨天我們依照JSON把Flex Message刻了出來,真心覺得應該可以有一個Generate Code的工具,把用Flex Message Simulator...

鐵人賽 SideProject30 DAY 26

技術 Day26 加上Flex Message Carousel

昨天我們完成了,從Linebot收到檔案,並且上傳到Google Drive上的指定資料夾。 但是目前指定資料夾的ID是寫死的,我們也不可能每次要指定資料夾都去...

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

技術 27.Rate limiting-1

如果你曾經使用過API來獲取服務,那麽你可能經受過與速率限制相抗衡。速率限制使得某種資源每次訪 問的次數受限。資源可以是任何東西:API連接,磁盤I/O,網絡包...

鐵人賽 自我挑戰組 DAY 23

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

Write unit test for Get Account API Code Flow: 透過 randomAccount() 函數建立一個隨機的測試...

鐵人賽 SideProject30 DAY 25

技術 D25 Drive Service - 上傳檔案02

昨天我們已經可以成功從LineBot上收到檔案並暫存下來,今天我們透過domainDrive.SaveContent()回傳的*os.File,把他傳入adap...

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

技術 26.Replicated request

對於大部分應用,儘可能快地響應請求是首要任務。例如,應用程序可能正在服務用戶的HTTP請求,或者檢索複製的數據塊。在這些情況下,你需要做出權衡:是將請求複製到多...

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

技術 25.Heartbeat

心跳(heartbeat)是併發進程向外界發出信號的一種方式。命名者從人體解剖學中受到啟發,使用心跳一詞表示被觀察 者的生命體征。心跳在Go語言出現前就已被廣泛...

鐵人賽 SideProject30 DAY 24

技術 Day24 Drive Service - 上傳檔案01

今天開始來處理上傳檔案到GoogleDrive的部分~ 首先要先能在LineBot上拿到使用者傳送的檔案,我們在Callback加上一個case,透過*line...

鐵人賽 SideProject30 DAY 23

技術 Day23 Drive Service - 撈出”我的雲端硬碟”&”與我共用”下的資料夾

我們之前實現過ListFiles(),會把所有雲端硬碟上的檔案列出來,我們也確定操作GoogleDrive這段沒有問題。但我們今天的需求是要把收到的檔案傳到Go...