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