日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Golang随笔

發布時間:2025/3/16 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Golang随笔 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

結構體是Todo,Todo{}代表空結構體

新添加依賴后執行 go mod tidy整理依賴

匿名變量不會分配內存,所以匿名變量之間不存在重復聲明。

單引號表示字符, 雙引號表示字符串,反引號表示多行字符串

通過在?const?后跟一對圓括號定義一組常量的方式來實現枚舉

type-switch用于判斷某個 interface 變量中實際存儲的變量類型

接口類型斷言x.(T),且要求成員順序一樣;

json.unmarshal時數值型的 json 統一被解析為?float64;

switch中默認每個case都會有隱藏的break,如果想去掉break可使用fallthrough;

go的i++值是一條語句,不能賦值,且只有i++沒有++i。

unsafe.Sizeof是在編譯期求值,返回的是類型數據結構的大小而不是其指向內存的大小。

var str string = "hello" var str2 stringfmt.Println(unsafe.SizeOf(str), unsafe.SizeOf(str2)) string類型不是直接存的數據,而是一個結構體,用指針指向實際數據地址, 在64位機器。ptr和int結構都是占用8字節,所以兩個打印出來都是字節

make([]string, 1, 2),len=1,cap=2;

make([]string, 2),len=2,cap=2

%p是指針的占位符;%+v是附帶打印結構的key

// 比較是否是指針m := make(map[string]string, 4)fmt.Println(reflect.DeepEqual(reflect.Ptr, reflect.ValueOf(&m).Kind()))

將函數作為參數變量或返回值的情況稱為function value。function value本質上是一個指針,指向runtime.funcval結構體,這個結構體里只有一個地址,即函數指令的入口地址。閉包其實就是有捕獲列表的funcval結構體,funcval加上偏移量可以找到每個捕獲的變量。

// 循環每秒執行一次for range time.Tick(time.Second){fmt.Println("hah")}

序列化:omitempty,如果是零值則忽略序列化該字段
反序列化:沒有的字段會賦予零值

提示gc釋放堆內存:如使用new在heap上開辟空間,使用結束后把指針置為nil。

結構體和數組作為復合類型,其零值以及能否比較、初始化、都是其內部的元素決定的,且復合類型占用連續的內存空間。


不能返回局部變量的地址,因為棧幀會被回收。

main?goroutine退出后(相當于進程結束),其他的工作goroutine也會隨之自動退出。

recover不能跨協程,會從panic點退出當前函數后繼續執行。

`json:",inline"`??忽略這一層級的字段,直接調用下一層級,減少重復定義。應該和直接不寫反引號效果一樣。

內聯是一種編譯器優化,用于將簡短函數的調用替換為函數體本身,可以消除函數調用本身的開銷,也使得編譯器能更高效地執行其他的優化策略。注釋//go:noinline會禁止Go編譯器對該函數進行內聯。

go tool compile ?-m main.go可以查看是否內聯,內存是否分配到了堆上。

空結構體和零長數組(兩個復合類型)都僅僅是一個占位符,不占用空間,這里編譯器進行了優化,如果結構體或數組的unsafe.sizeof=0則直接返回zerobase。

runtime.KeepAlive 能保證變量不被 GC 所回收。

超時控制:請求時間過長用戶側可能已經離開頁面,但是服務端還在消耗資源得到的結果沒有意義;

close(channel)只是用來告訴接受者沒有東西要發送了,并且channel和文件描述符不一樣,只是個對象而已可以自己gc掉,并不是必須close關閉的;

單引號表示byte類型或rune類型,雙引號表示字符串,反引號表示多行字符串;

for range會首先計算切片的長度,如果長度不滿足就不進入循環;

接口到普通類型的轉換用-接口類型斷言;普通類型到普通類型的轉換用-類型轉換;只要有部分字段對應-序列化和反序列化;

前端(VO)<-->controller(DTO)<-->service(BO)<-->dao(PO)<-->數據庫(DAO)
VO:一般用于前端展示用
DTO:用于數據傳遞(接口入參和接口返回值都可以)
?

總結

以上是生活随笔為你收集整理的Golang随笔的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。