最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Golang time包中的time.Duration類型

 更新時間:2023年07月28日 09:22:55   作者:路多辛  
在日常開發(fā)過程中,會頻繁遇到對時間進行操作的場景,使用 Golang 中的 time 包可以很方便地實現(xiàn)對時間的相關(guān)操作,本文講解一下 time 包中的 time.Duration 類型,需要的朋友可以參考下

time.Duration

time.Duration 類型是一個有符號的 int64 類型,以納秒為單位,用來表示兩個時間點之間的時長。類型定義如下:

type Duration int64

擁有的方法如下:

  • func (d Duration) Hours() float64,返回持續(xù)的時間,以小時為單位。
  • func (d Duration) Minutes() float64,返回持續(xù)的時間,以分鐘為單位。
  • func (d Duration) Seconds() float64,返回持續(xù)的時間,以秒為單位。
  • func (d Duration) Milliseconds() int64,返回持續(xù)的時間,以毫秒為單位。
  • func (d Duration) Microseconds() int64,返回持續(xù)的時間,以微秒為單位。
  • func (d Duration) Nanoseconds() int64,返回持續(xù)的時間,以納秒為單位。
  • func (d Duration) String() string,返回一個字符串類型的持續(xù)的時間,格式為 “72h3m0.5s”。示例如下:
package main
import (
	"fmt"
	"time"
)
func main() {
	a := time.Duration(3) * time.Hour
	fmt.Println(a.Hours())        // 3
	fmt.Println(a.Minutes())      // 180
	fmt.Println(a.Seconds())      //10800
	fmt.Println(a.Milliseconds()) //10800000
	fmt.Println(a.Microseconds()) //10800000000
	fmt.Println(a.Nanoseconds())  //10800000000000
	fmt.Println(a.String())       //3h0m0s
}
  • func (d Duration) Round(m Duration) Duration,返回將 d 四舍五入到 m 的最接近倍數(shù)的結(jié)果。通過示例理解一下:
package main
import (
	"fmt"
	"time"
)
func main() {
	a := time.Duration(10) * time.Minute
	// 結(jié)果為 10,10 正好是 1 的整數(shù)倍
	fmt.Println(a.Round(time.Duration(1) * time.Minute))
	// 結(jié)果為 9,3 的 3 倍是 9,3 的 4 倍是 12,9 和 10 離得更近
	fmt.Println(a.Round(time.Duration(3) * time.Minute))
	// 結(jié)果為 12,4 的 2 倍是 8,4 的 3 倍是 12,距離一樣近往上入
	fmt.Println(a.Round(time.Duration(4) * time.Minute))
	// 結(jié)果為 10,10 正好是 5 的整數(shù)倍
	fmt.Println(a.Round(time.Duration(5) * time.Minute))
	// 結(jié)果為12, 6 的 1 倍是 6,6 的 2 倍是 12,10 離 12 更近
	fmt.Println(a.Round(time.Duration(6) * time.Minute))
}
  • func (d Duration) Truncate(m Duration) Duration,用于將 d 截斷到 m 最近整數(shù)倍。通過示例理解一下:
package main
import (
	"fmt"
	"time"
)
func main() {
	a := time.Duration(10) * time.Minute
	// 結(jié)果為 10,10 正好是 1 的整數(shù)倍
	fmt.Println(a.Truncate(time.Duration(1) * time.Minute))
	// 結(jié)果為 9,3 的 3 倍是 9,最接近 10
	fmt.Println(a.Truncate(time.Duration(3) * time.Minute))
	// 結(jié)果為 8,4 的 2 倍是 8,最接近 10
	fmt.Println(a.Truncate(time.Duration(4) * time.Minute))
	// 結(jié)果為 10,10 正好是 5 的整數(shù)倍
	fmt.Println(a.Truncate(time.Duration(5) * time.Minute))
	// 結(jié)果為 6,6 的 1 倍是 6,最接近 10
	fmt.Println(a.Truncate(time.Duration(6) * time.Minute))
	// 結(jié)果為 0,11 的 1 倍是11,大于了 10
	fmt.Println(a.Truncate(time.Duration(11) * time.Minute))
}

加減法運算

因為 time.Duration 表示的是時間段,可以對 time.Duration 類型的值進行加減法運算,例如:

package main
import (
	"fmt"
	"time"
)
func main() {
	a := time.Duration(10) * time.Minute
	b := time.Duration(10) * time.Second
	fmt.Println(a + b)
	fmt.Println(a - b)
}

到此這篇關(guān)于詳解Golang time包中的time.Duration類型的文章就介紹到這了,更多相關(guān)Golang time.Duration內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • go原生庫的中bytes.Buffer用法

    go原生庫的中bytes.Buffer用法

    這篇文章主要介紹了go原生庫的中bytes.Buffer用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • GO使用socket和channel實現(xiàn)簡單控制臺聊天室

    GO使用socket和channel實現(xiàn)簡單控制臺聊天室

    今天小編給大家分享一個簡單的聊天室功能,聊天室主要功能是用戶可以加入離開聊天室,實現(xiàn)思路也很簡單明了,下面小編給大家?guī)砹送暾a,感興趣的朋友跟隨小編一起看看吧
    2021-12-12
  • 詳解Go語言中Goroutine退出機制的原理及使用

    詳解Go語言中Goroutine退出機制的原理及使用

    goroutine是Go語言提供的語言級別的輕量級線程,在我們需要使用并發(fā)時,我們只需要通過?go?關(guān)鍵字來開啟?goroutine?即可。本文就來詳細講講Goroutine退出機制的原理及使用,感興趣的可以了解一下
    2022-07-07
  • Go 實現(xiàn)基于Token 的登錄流程深度分析

    Go 實現(xiàn)基于Token 的登錄流程深度分析

    Token 認證機制的核心思想是,服務(wù)端在用戶登錄時生成一個 Token,客戶端在后續(xù)的請求中攜帶這個 Token,服務(wù)端通過驗證 Token 的有效性來確認用戶的身份,本文將帶你深入探索基于 Token 的登錄流程,這是一種更為靈活且適用于現(xiàn)代應(yīng)用架構(gòu)的認證方式
    2024-03-03
  • Go語言中io.Reader和io.Writer的詳解與實現(xiàn)

    Go語言中io.Reader和io.Writer的詳解與實現(xiàn)

    在Go語言的實際編程中,幾乎所有的數(shù)據(jù)結(jié)構(gòu)都圍繞接口展開,接口是Go語言中所有數(shù)據(jù)結(jié)構(gòu)的核心。在使用Go語言的過程中,無論你是實現(xiàn)web應(yīng)用程序,還是控制臺輸入輸出,又或者是網(wǎng)絡(luò)操作,不可避免的會遇到IO操作,使用到io.Reader和io.Writer接口。下面來詳細看看。
    2016-09-09
  • Go并發(fā)同步Mutex典型易錯使用場景

    Go并發(fā)同步Mutex典型易錯使用場景

    這篇文章主要為大家介紹了Go并發(fā)同步Mutex典型易錯使用場景示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • golang使用OpenTelemetry實現(xiàn)跨服務(wù)全鏈路追蹤詳解

    golang使用OpenTelemetry實現(xiàn)跨服務(wù)全鏈路追蹤詳解

    這篇文章主要為大家介紹了golang使用OpenTelemetry實現(xiàn)跨服務(wù)全鏈路追蹤詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • 一文了解Go語言中編碼規(guī)范的使用

    一文了解Go語言中編碼規(guī)范的使用

    這篇文章主要介紹了一文了解Go語言中編碼規(guī)范的使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Go語言程序開發(fā)gRPC服務(wù)

    Go語言程序開發(fā)gRPC服務(wù)

    這篇文章主要為大家介紹了Go語言程序開發(fā)gRPC服務(wù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • golang簡單獲取上傳文件大小的實現(xiàn)代碼

    golang簡單獲取上傳文件大小的實現(xiàn)代碼

    這篇文章主要介紹了golang簡單獲取上傳文件大小的方法,涉及Go語言文件傳輸及文件屬性操作的相關(guān)技巧,需要的朋友可以參考下
    2016-07-07

最新評論

长海县| 宝山区| 秦安县| 黄石市| 西峡县| 灵璧县| 崇明县| 遂溪县| 凤台县| 建德市| 秦皇岛市| 嘉祥县| 洛扎县| 南阳市| 河东区| 夏河县| 漳州市| 南投市| 灵宝市| 富宁县| 滦平县| 广饶县| 临潭县| 香河县| 商丘市| 巫溪县| 南江县| 阳东县| 林芝县| 盐池县| 卓尼县| 达日县| 广汉市| 台江县| 礼泉县| 渝中区| 石渠县| 上思县| 静海县| 开远市| 新民市|