五個我最近在 Go 里學(xué)到的小技巧
共 3273字,需瀏覽 7分鐘
·
2024-07-03 08:00
原文鏈接:https://medium.com/@andreiboar/5-small-tips-i-recently-learned-in-go-cf52d50cf129
讓編譯器計算數(shù)組數(shù)量
我們在 Go 通常很少使用數(shù)組 arrays,一般使用切片 Slice 來代替;
但是當(dāng)你需要使用的時候,如果你對需要指定數(shù)量大小感到很煩時可以使用 [...] 讓編譯器自動幫我們計算數(shù)組大小:
package main
import "fmt"
func main() {
arr := [3]int{1, 2, 3}
sameArr := [...]int{1, 2, 3} // Use ... instead of 3
// Arrays are equivalent
fmt.Println(arr)
fmt.Println(sameArr)
}
使用 go run . 替換 go run main.go
每當(dāng)我用 Go 寫第一行代碼時,我都習(xí)慣于開始寫 main.go:
package main
import "fmt"
func main() {
sayHello()
}
func sayHello() {
fmt.Println("Hello!")
}
但是當(dāng) main.go 變得越來越大時,我喜歡把一些結(jié)構(gòu)體移動到新的文件里,還是在 main 這個包中。
main.go:
package main
func main() {
sayHello()
}
say_hello.go:
package main
import "fmt"
func sayHello() {
fmt.Println("Hello!")
}
此時使用 go run main.go 將會得到以下的錯誤:
# command-line-arguments
./main.go:4:2: undefined: sayHello
此時可以使用 go run . 來解決這個問題。
使用下劃線讓你的數(shù)字變得更易讀
你知道可以使用下劃線使得你的長數(shù)字更易讀嗎?
package main
import "fmt"
func main() {
number := 10000000
better := 10_000_000
fmt.Println(number == better)
}
可以在同一個包下有不同的測試包
在 Go 中我通常認(rèn)為一個目錄下只能有一個包,但也不是完全正確的。
假設(shè)你有一個包名為:yourpackage 此時你可以還可以在同一個目錄下創(chuàng)建一個名為 yourpackage_test 的包,同時在這個包里編寫你的測試代碼。
這樣做的好處是,那些沒有被 exporter 的函數(shù)在 yourpackage_test 包下是不能直接訪問的,確保測試的是被暴露的函數(shù)。
多次傳遞相同參數(shù)的簡單方法
在使用字符串格式化函數(shù)時,我總是覺得必須重復(fù)一個多次使用的參數(shù)很煩人:
package main
import "fmt"
func main() {
name := "Bob"
fmt.Printf("My name is %s. Yes, you heard that right: %s\n", name, name)
}
還好還有更簡便的方法,這樣只需要傳遞一次參數(shù):
package main
import "fmt"
func main() {
name := "Bob"
fmt.Printf("My name is %[1]s. Yes, you heard that right: %[1]s\n", name)
}
在這個 Twitter 里發(fā)現(xiàn)的:
希望你今天學(xué)到了一些新東西,最近有沒有發(fā)現(xiàn)一些你從來不知道的 Golang 小技巧?
往期推薦
點分享
點收藏
點點贊
點在看
