Searching We.Love.Privacy.Club

Twts matching #Golang
Sort by: Newest, Oldest, Most Relevant

用 Golang 做一個永久阻塞,有哪些小技巧 ?
Go 的運行時的當前設計,假定程序員自己負責檢測何時終止一個 goroutine 以及何時終止該程序。可以通過調用 os.Exit 或從 main() 函數的返回來以正常方式終止程序。而有時候我們需要的是使程序阻塞在這一行。使用 sync.WaitGroup 一直等待直到 WaitGroup 等於 0package mainimport ”sync”func main() {    var wg ⌘ Read more

⤋ Read More

不可思議的快!加速 Docker 中構建 Golang 應用
這些天我在工作中正在進行一個 GoLang 項目。這與我們通常使用的 Java 和 Spring Boot 應用程序有很大不同, 感覺很不錯:)。和我們所有的其他組件一樣, 這個 GoLang 項目也需要被封裝在一個容器中, 才能在 Kubernetes 集羣中執行。所以我編寫了一個 Dockerfile:構建階段FROM golang:1.22.1-alpine AS buildWORKDIR ⌘ Read more

⤋ Read More

Golang 高效的切片拼接和 Go1-22 中新的拼接方法
在 Go 中,切片拼接是一種常見操作,但如果處理不當,可能會導致性能問題或意外的副作用。本文將詳細介紹幾種切片拼接的高效方法,討論它們的優缺點以及適當的使用場景。 基本的方法和其限制使用 append 函數最直接的方法是使用 append 函數,它將一個切片的元素添加到另一個切片的末尾。slice1 := []int{1, 2}slice2 := []int{3, 4}result := app ⌘ Read more

⤋ Read More

[langchaingo] 基於 Hugging Face 構建大模型應用
今天,我們將開始 Golang + LLM 系列的教程,本文將介紹如何在 Hugging Face 上使用 LangchainGo 來實現你的第一個大模型應用!Hugging Face 是什麼?Hugging Face 是一個火爆的人工智能開發社區和平臺,專注於自然語言處理(NLP)領域。該平臺提供了各種各樣的工具和資源,包括預訓練模型、模型庫、數據集、評估指標以及用於開發和部署 NLP 模型的庫 ⌘ Read more

⤋ Read More

使用 GitHub Actions 構建 Golang PGO
今年 2 月,我宣佈 Dolt 版本現已構建爲配置文件引導優化 (pgo) 二進制文件,利用 Golang 1.20 的強大功能將 Dolt 的讀取性能提高 5.3%。在我宣佈這一消息之前,我們的一位常駐 Golang 專家 Zach 試驗並測試了 Golang 的 pgo 功能,並寫下了他在使用 Dolt 構建後觀察到的性能提升,該配置文件首先針對 Dolt 運行我們的 Sysbench 基準測 ⌘ Read more

⤋ Read More

Golang - Jaeger 實現分佈式鏈路追蹤
什麼是分佈式鏈路追蹤(Distributed Tracing?)?分佈式追蹤是軟件開發和性能監控中使用的一種技術,用於跟蹤和分析請求在分佈式系統的各個組件中的流動。在現代軟件應用中,不同的服務和微服務通常一起工作來滿足用戶請求。這些服務可能分佈在多臺服務器、容器或地理位置上。瞭解這些服務之間的交互並識別瓶頸或性能問題可能是具有挑戰性的。不同服務生成的跨度被收集併發送到一個稱爲追蹤系統的集中式存儲庫 ⌘ Read more

⤋ Read More

Golang 異步編程方式和技巧
Golang 基於多線程、協程實現,與生俱來適合異步編程,當我們遇到那種需要批量處理且耗時的操作時,傳統的線性執行就顯得喫力,這時就會想到異步並行處理。下面介紹一些異步編程方式和技巧。作者:zvalhu一、使用方式1.1、最簡單的最常用的方式:使用 go 關鍵詞func main() { go func() {  fmt.Println(“hello world1”) }() go func( ⌘ Read more

⤋ Read More

分享 Golang 健壯高效的一種重試模式
在分佈式系統和網絡編程領域,優雅地處理瞬時錯誤是構建彈性應用程序的關鍵方面。應對這些暫時性小故障的一種有效策略是實現重試模式。在這篇博客文章中,我們將深入探討在 Golang 中創建一個健壯的重試模式瞬時錯誤瞬時錯誤,通常在網絡操作中遇到,可能是短暫的故障,可以包括網絡超時、服務器暫時不可用或其他瞬時故障。通過重試來解決這些錯誤可以顯著提高應用程序的可靠性和容錯能力。Golang 重試模式重試模式 ⌘ Read more

⤋ Read More

快速優化 Golang 代碼的幾個小 Tips
本文將提供一些代碼優化指南,希望能夠幫助開發者增強其程序性能並簡化開發,實現更高效和健壯的編碼,解鎖 Golang 應用程序的潛力。 下面是我從自己平時開發常用的實用庫中隨機選擇的一些有用且通用的代碼片段。Tracking Execution Time如果你想要跟蹤 Go 中函數的執行時間,有一個簡單而高效的技巧,只需使用 defer 關鍵字即可實現一行代碼。你只需要一個 TrackTime 函數 ⌘ Read more

⤋ Read More

golang 開發: goroutine 在項目中的使用姿勢
很多初級的 Gopher 在學習了 goroutine 之後,在項目中其實使用率不高,尤其一些跨語言過來的人,對併發編程理解不深入,可能很多人只知道 go func(), 或者掌控不夠,謹慎一些,儘量少使用或者不使用,用的話就是 go func(),主要列一下我們這邊的主要使用方法。goroutine 在項目中的使用方法看一下樣例代碼,實際上,我們生產環境中就是這麼使用的。package lo ⌘ Read more

⤋ Read More

Go 的線程池和協程池,看這一篇你就懂了
Golang 線程池與協程池是併發編程中的重要概念,它們可以幫助我們更高效地管理併發任務,提高程序的性能和資源利用率。下面我將詳細解釋這兩個概念,包括它們的實現方式、使用場景以及原理。線程池(Thread Pool)概念:線程池是一種併發設計模式,用於管理線程的創建、銷燬和複用。線程池維護着多個線程,這些線程可以被用來執行任務,任務完成後線程並不立即銷燬,而是返回線程池中等待下一個任務。這樣可以減 ⌘ Read more

⤋ Read More

理解並在 Golang 中實現自旋鎖
在併發編程中,互斥鎖(Mutual Exclusion)是一種常用的同步機制,用於保護關鍵資源並防止數據競態。然而,在特定情況下,特別是當鎖的持有時間很短且線程數量有限時,一種輕量級的鎖稱爲自旋鎖(Spin Lock)可以提供更高的性能。What is a Spin Lock自旋鎖是一種忙等待鎖。當一個線程試圖獲取另一個線程持有的鎖時,它會持續地檢查鎖的狀態(自旋),直到鎖被釋放,然後它就會獲得所 ⌘ Read more

⤋ Read More

9 個必備的 Go 語言 GitHub 庫
使用這些不可或缺的 GitHub 庫構建健壯高效的 Go 應用程序———————————在充滿活力的 Golang 開發生態系統中,GitHub 是一個寶庫,提供了許多寶貴的庫和包,這些庫和包簡化了開發工作流程,提高了生產效率,並促進了代碼重用。從 Web 框架到數據庫驅動,GitHub 倉庫託管了大量必備的 Go 庫,使開發人員能夠構建健壯且可擴展的應 ⌘ Read more

⤋ Read More

純 Go 實現的 MySQL 引擎——go-mysql-server
go-mysql-server 是一個用 Go 編寫的 MySQL 兼容的查詢引擎。它不僅是一個解析器,還是一個服務器和查詢執行引擎,完全使用 Go 語言編寫。與 Dolt 一樣,它的目標是成爲 MySQL 的 100% 兼容的替代品。go-mysql-server 具有以下兩個主要用途:作爲 Golang 測試環境中 MySQL 的替代品,使用內置的內存數據庫實現。 通過實現一些接口, ⌘ Read more

⤋ Read More

Golang 也可以寫出很棒的 GUI 應用!
今天聊點輕鬆的,這篇文章會分享一些用 Golang 開發的非常棒的 GUI 應用。 Pixyne第一個是 Pixyne,這是一個照片應用程序,允許你快速查看文件夾中的照片!以下是他們在 Fyne 頁面的鏈接 [1]。EasyLPAC接下來是 EasyLPAC,這個軟件能夠從電腦管理你的 eUICC 卡。這是項目在 GitHub 頁面的鏈接 [2]。Snap接下來是 Snap,這是一個跨平臺的工具 ⌘ Read more

⤋ Read More

Golang: 打造一個交互式命令行
Go 非常適合於構建命令行應用程序。我們構建了一個名爲 Dolt 的應用, 它是世界上第一個支持版本控制的 SQL 數據庫。我們爲處理 Dolt 的所有子命令和參數編寫了自己的命令行解析器, 但也許我們不應該這樣做。現在有很多很棒的工具可以替代我們自己編寫的解析器, 如果我們今天開始這個項目, 我們可能會選擇使用它們:spf13/cobra 提供了從簡單的文本命令格式生成代碼的強大支持, 並且可以 ⌘ Read more

⤋ Read More

一文搞定 Golang 字符串:高效編碼的最佳實踐
本文介紹 Golang 中處理字符串的最佳實踐,確保開發項目中實現最佳的效率、最佳性能並讓代碼更優雅。字符串可以爲 nil 嗎?如下所示,在創建字符串變量時,默認值必須是空字符串 ““。如果我們嘗試使用 nil 值初始化字符串變量,將遇到一個錯誤,提示 nil 不能在變量聲明中用作字符串值。例如:func main() {   var s string   s = nil // Cannot us ⌘ Read more

⤋ Read More

Go 一行代碼測量函數的執行時間
Golang Tips 是翻譯的 Phuong Le @func25[1] 陸陸續續的發表的推文,目前已經發表 70 + 了。我徵得 Phuong Le 的同意後,會逐步把這些推翻翻譯過來,發佈到公衆號上。因爲是推文,可能原作者的內容比較簡單,比如第一個 tip 就一張圖片,我會相應的進行擴充,豐富其內容。 後續也會在 github 建立一個項目,大家都可以參與進行翻譯。我們可以通過 defe ⌘ Read more

⤋ Read More

使用 gofn 和 pipe 助力 Golang 函數式編程
今天要介紹的是兩個在函數式編程裏面很有用的 package,通過使用 gofn[1] 和 pipe[2] 庫讓 Go 的函數式編程更強大。Go 的函數式編程由於本質上,Go 並不像 Haskell 或 Erlang 那樣是純函數式語言,但這並不意味着我們不能應用函數式編程的概念來編寫簡潔、可讀和高效的代碼。這正是 gofn 和 pipe 發揮作用的地方。gofn 和 pipegofn:一個在 Go ⌘ Read more

⤋ Read More

Golang 使用 Worker Pool 模式釋放併發性能
我們都知道 Go 具有卓越的併發特性,Worker Pool pattern(工作池模式)是一種併發設計模式,它用於管理一組工作線程以執行任務。本文用一個例子深入講解如何使用 Worker Pool 模式提升程序的併發性能。拋出問題快速計算一個數字數組中每個數字的平方,並返回結果數組(該數組只包含從 1 到 150 的整數)。Pattern 1 : N routines for N numbers ⌘ Read more

⤋ Read More

Golang 如何動態解析 JSON
Go 以其簡潔高效而聞名,提供了強大的工具用於處理 JSON 數據。雖然基於結構體的解析很常見,但在某些情況下,JSON 結構是動態的或未知的。在本文章中,我們將探討如何使用 Go 語言中的空接口進行動態 JSON 解析,從而實現靈活性,無需預定義結構體。什麼是 Dynamic JSON Parsing動態 JSON 解析指的是能夠處理具有不同結構的 JSON 數據,適應不同模式而無需嚴格定義。在 ⌘ Read more

⤋ Read More

使用 Golang 構建你的 LLM API
大語言模型,像 ChatGPT, Llama 等已經席捲全球,從上圖的數據可以看出,ChatGPT 花了 5 天時間就達到了 100 萬用戶。而 Netflix 則花了近 4 年的時間。本文將使用 Gin 和 Langchain 教你快速構建一套 LLM API。GinGin[1] 是一個用於使用 GoLang 構建 API 的現代、快速的 Web 框架。它被設計爲易於使用、高效且性能出色,利用了 ⌘ Read more

⤋ Read More

一文掌握 Golang Empty Struct 的所有用法
在 Go 語言中,空結構體被用作佔位符,當我們想要創建一個不攜帶任何數據的類型時。這個概念經常被用來表示特定的行爲,或者將該類型用作類似集合的數據結構。下面是個使用空結構體的例子:package mainimport ( ”fmt” ”unsafe”)// EmptyStruct is an empty struct typetype EmptyStruct struct{}func main() ⌘ Read more

⤋ Read More

Golang 如何實現訪問私有成員
在 Go 語言編程中,我們都知道首字母小寫的成員表明它是不公開的,即私有的。一般情況下,我們無法直接訪問一個包中的私有成員。然而,Go 語言提供了一些不尋常的手段允許我們在特定情況下繞過這一限制。在這篇文章中,我們將深入探討這些技巧,並通過詳細的說明和代碼示例來展示它們的使用方法。但在此必須提醒:這些方法很少用於生產環境,因爲它們破壞了封裝性,很容易帶來難以發現的 bug 和安全問題。在下文,我們 ⌘ Read more

⤋ Read More

最具研讀價值的 Go 源碼之一:context 包
前言你瞭解 Context 中的回溯鏈和樹結構嗎?想知道 Context 如何觸發級聯取消嗎?本文將換個角度聊一聊 golang 中的 context,讓你真正理解什麼是 Context。context 包中的代碼雖然只有 600 多行,但已經成爲了併發控制、超時控制的標準做法,可以說是真正的短小而精悍,是十分值得研讀的 Go 源碼之一。本文首先從整體的視角解析了 context 的主要接口和函數 ⌘ Read more

⤋ Read More

一文帶你完整了解 Go 語言 IO 基礎庫
作者 | 百度小程序團隊 導讀 introduction對於剛接觸 Golang 學習的同學,估計比較難掌握的知識點之一就是文件 IO 處理,光在基礎庫裏會發現 golang 除了 io 包提供文件處理外,os 包,http 包,embed 包都有提供類似的處理,由於 Golang 的繼承表達採用的是隱式的表達, 所以他們之間有什麼關係?能否相互轉換處理?是非常難一眼看出來的。本文就幫大家完整地 ⌘ Read more

⤋ Read More

Golang 編寫 MySQL UDF
一、MySQL UDF———–這玩意全稱 “MySQL user-definable function”, 從名字就可以看出來叫 “用戶定義的方法”; 那麼 UDF 到底是幹啥的呢?簡單一句話說就是說: 你可以自己寫點代碼處理數據, 然後把這段代碼編譯成動態鏈接庫 (so), 最後在 MySQL 中動態加載後用戶就可以用了.二、解決方案——由於要檢查數據庫, 但是實際上審查並 ⌘ Read more

⤋ Read More

爲什麼 Golang Fasthttp 選擇使用 slice 而非 map 存儲請求數據
Fasthttp 是一個高性能的 Golang HTTP 框架,它在設計上做了許多優化以提高性能。其中一個顯著的設計選擇是使用 slice 而非 map 來存儲數據,尤其是在處理 HTTP headers 時。爲什麼呢?本文將從簡單到複雜,逐步剖析爲什麼 Fasthttp 選擇使用 slice 而非 map,並通過代碼示例解釋這一選擇背後高性能的原因Slice vs Map:基本概念——- ⌘ Read more

⤋ Read More

圖文講透 Golang 標準庫 net-http 實現原理 – 客戶端
客戶端的內容將是如何發送請求和接收響應,走完客戶端就把整個流程就完整的串聯起來了!這次我把調用的核心方法和流程走讀的函數也貼出來,這樣看應該更有邏輯感,重要部分用紅色標記了一下,可以着重看下。先了解下核心數據結構 Client 和 Request。Client 結構體type Client struct {     Transport RoundTripper     CheckRedirect ⌘ Read more

⤋ Read More

golang 高性能無 GC 的緩存庫 bigcache 是怎麼實現的?
我們寫代碼的時候,經常會需要從數據庫裏讀取一些數據,比如配置信息或者諸如每週熱點商品之類的數據。如果這些數據既不經常變化,又需要頻繁讀取,那比起每次都去讀數據庫,更優的解決方案就是將它們放到應用的本地內存裏,這樣可以省下不少數據庫 IO,性能嘎一下就上來了。那麼現在問題就來了,假設我要在某個服務應用裏實現一個緩存組件去存各種類型的數據,該怎麼實現這個組件呢?從一個 map 說起———- ⌘ Read more

⤋ Read More

Golang 數據結構性能優化實踐
僅僅通過對 struct 字段重新排序,優化內存對齊方式,就可以獲得明顯的內存和執行效率提升。原文: How to Speed Up Your Struct in Golang[1]如果你有 Golang 開發經驗,一定定義過 struct 類型。但可能你不知道,通過簡單的重新排序 struct 字段,可以極大提高 Go 程序的速度和內存使用效率!是不是難以置信?我們一起來看一下吧!簡單 De ⌘ Read more

⤋ Read More

Golang 泛型入門指南
Go 語言中的泛型是指一種語言特性,允許創建可以處理不同類型的函數、數據結構和接口。換句話說,泛型使得可以創建不受特定類型或數據結構限制的代碼。如果我們此前有使用 Java 或者 C++ 的經驗,那麼會很好理解。在 Go 語言引入泛型之前,開發人員必須編寫多個函數來處理不同類型的數據。這種方法通常很繁瑣,並導致代碼重複。有了泛型,開發人員可以編寫更簡潔和可重用的代碼,可以處理不同類型的數據。Go ⌘ Read more

⤋ Read More

Golang 使用 Zookeeper 實現分佈式鎖
什麼是分佈式鎖?——–分佈式鎖是一種在分佈式系統中用於控制併發訪問的機制。在分佈式系統中,多個客戶端可能會同時對同一個資源進行訪問,這可能導致數據不一致的問題。分佈式鎖的作用是確保同一時刻只有一個客戶端能夠對某個資源進行訪問,從而避免數據不一致的問題。分佈式鎖的實現通常依賴於一些具有分佈式特性的技術,如 ZooKeeper、Redis、數據庫等。這些技術提供了在分佈式環境中實現互斥訪問的 ⌘ Read more

⤋ Read More

Golang 流水線設計模式實踐
流水線設計模式對於順序處理業務數據非常有用,可以以一致的方式直觀的定義對數據的處理流程。原文: Using a Pipeline Pattern in Golang[1]到目前爲止,我已經將 Golang 整合到項目中有一段時間了,Golang 是一種非常強大的語言,我渴望在其生態系統中進一步磨練技能。基於項目的特定需求,我需要實現流水線模式 (Pipeline Pattern),數據需要通過 ⌘ Read more

⤋ Read More

Golang 如何有效限制併發數?
Go 語言目前很火熱,一部分原因在於自身帶 “高併發” 的標籤,其本身就擁有優秀的併發量和吞吐量。1 協程可以無限創建嗎?我們在日常開發中會有高併發場景,有時會用多協程併發實現。在高併發業務場景,能否可以隨意開闢 goroutine 並且放養不管呢?畢竟有強大的 GC 和優越的 GMP 調度算法。看下面的代碼:package mainimport (    ”fmt”    ”math”    ” ⌘ Read more

⤋ Read More

在 Golang 中 如何實現 NATS JetStream 隊列
NATS JetStream 是一個高性能、持久化、分佈式消息隊列系統,它爲發佈 / 訂閱、隊列和流式處理提供了豐富的功能。在 Go 中實現 NATS JetStream 隊列可以通過 NATS 客戶端庫來完成。一、NATS JetStream 的歷史NATS JetStream 是 NATS 消息系統的一個重要組件,旨在提供持久性消息傳遞和流處理功能。下面是 NATS JetStream 的歷史 ⌘ Read more

⤋ Read More

Golang 實現協程池
Go 協程池解決的問題:當需要創建大量的goroutine的時候,如果不限定goroutine的數量,將是對程序的巨大災難 使用完的goroutinue可以複用繼續執行下一個任務(而不是立即銷燬),如果每次都是創建新goroutinue執行任務,頻繁的創建銷燬goroutinue導致利用率低下 項目地址 https://github.com/gofish2020/easygpool 歡 ⌘ Read more

⤋ Read More

Golang 有必要實現 async-await 嗎?
前言 今天在某站上面看到一個大佬解釋 Golang 中的錯誤處理 err !=nil 時,直接用 Javascript 的 async/await 來解釋。async/await 語法糖在 C#, Python 和 Javascript 中是很常見的異步協程寫法,而在 Golang 中則是使用 goroutine 機制。這時習慣或者喜歡 async/await 語法糖的人可能就會有疑問:Gola ⌘ Read more

⤋ Read More

圖文講透 Golang 標準庫 net-http 實現原理 – 服務端
前言今天分享下 Go 語言 net/http 標準庫的內部實現邏輯,文章將從客戶端 (Client)– 服務端(Server) 兩個方向作爲切入點,進而一步步分析 http 標準庫內部是如何運作的。由於會涉及到不少的代碼流程的走讀,寫完後覺得放在一篇文章中會過於長,可能在閱讀感受上會不算很好,因此分爲【Server–Client 兩個篇文章】進行發佈。本文內容是【服務端 Server 部分】, ⌘ Read more

⤋ Read More

Go 一文帶你喫透 HTTP 客戶端!
*1. HTTP 請求簡介HTTP(Hypertext Transfer Protocol) 是構建 web 應用通信的基石。HTTP 工作於客戶端 - 服務端架構上。HTTP 客戶端發起請求, 服務器接收請求並返回響應。HTTP 請求主要由請求行、請求頭、請求體組成請求行 GET /search?name=Golang HTTP/1.1請求頭部 Host: www.baidu ⌘ Read more

⤋ Read More

千萬級高性能長連接 Go 服務架構實踐
作者 | glstr導讀 introduction移動互聯網時代,長連接服務成爲了提升應用實時性和互動性的基礎服務。本文主要介紹了百度系內基於 golang 實現的統一長連接服務。主要從統一長連接功能實現和性能優化等角度,描述了統一長連接服務在設計、開發和維護過程中面臨的問題和挑戰,重點介紹瞭解決相關問題和挑戰的解決方案和實踐經驗。01摘要移動互聯網時代,用戶對服務的實時性、互動性有了更高的要求, ⌘ Read more

⤋ Read More

golang 中如何使用 kafka
Kafka 是一種備受歡迎的流處理平臺,具備分佈式、可擴展、高性能和可靠的特點。在處理 Kafka 數據時,有多種最佳實踐可用來確保高效和可靠的處理。本文將介紹這些實踐方法,並展示如何使用 Sarama 來實現它們。Kafka 消費的最佳實踐取決於你的使用場景和需求,以下是一些建議:1 使用 Consumer Group: 在生產環境中,建議使用 Consumer Group,這樣可以確保多個消費 ⌘ Read more

⤋ Read More

Golang 實現程序優雅退出的方法有哪些?
在 Go 語言中,實現程序的優雅退出是一項重要的任務,特別是在涉及到 HTTP 服務器、gRPC 服務器、以及其他後臺工作的情況下。以下是一些常見的平滑關閉方法:1. HTTP Server 平滑關閉Go 1.8 及以上版本提供了 http.Server 結構的 Shutdown 方法,用於平滑關閉 HTTP 服務器。package mainimport (    ”context”    ”ne ⌘ Read more

⤋ Read More

Go 語言常見錯誤 - 不使用 function option 模式
在使用 Golang 進行復雜的開發任務時,處理一個結構體有許多可選的配置項是常有的事。這也是在許多函數設計中共有的特徵,因爲這使得函數更容易使用,靈活性更強。然而,有時我們可能會看到錯誤的實踐,那就是 “遺漏使用 Function Option 模式”。在這篇文章中,我將詳細解釋Function Option的概念,並指出爲什麼我們應該使用它。我還將給出實例來展示如果忽略了Function Op ⌘ Read more

⤋ Read More

使用 Golang Fiber 快速創建高性能的 Web 應用程序
Golang Fiber 是一個靈感來源於 Express.js 的 Web 開發框架,它旨在簡化 Go 語言中的 HTTP 服務開發,同時提供極高的性能。它基於 Fasthttp,這是一個快速的 HTTP 引擎,專爲高性能而設計。在這篇文章中,我們會詳細介紹如何使用 Fiber 創建 web 應用程序,並提供豐富的示例。開始前的準備——在開始之前,確保你已安裝了 Go 語言環境。你可以在 ⌘ Read more

⤋ Read More

golang 定時器相關的函數超硬核解析
一、前言Golang 定時器包括:一次性定時器(Timer)和週期性定時器 (Ticker)。編程中經常會通過 timer 和 ticker、AfterFunc。定時器 NewTicker 是設定每隔多長時間觸發的,是連續觸發,而計時器 NewTimer 是等待多長時間觸發的,只觸發一次,兩者是不同的。等待時間函數 AfterFunc 是在 After 基礎上加了一個回調函數,是等待時間到來後在另 ⌘ Read more

⤋ Read More