以下是我最近在 Go 中学到的 5 个小技巧,感觉挺有用且容易被大家忽略,在这里分享给大家。
计算数组元素的活可以交给编译器
在 Go 中,数组的使用并不多,大家都会选择使用 slice。在使用 slice 时,如果不想自己写数组中元素的个数,可以使用 […] ,编译器会帮你计数:
1 2 3 4 5 6 7 8 9 10 11 12
| 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
每当我开始用 Go 创建项目时,我都会先创建一个 main.go 文件:
1 2 3 4 5 6 7 8 9 10 11
| package main
import "fmt"
func main() { sayHello() }
func sayHello() { fmt.Println("Hello!") }
|
但当 main.go 文件变大时,就要使用同一个 main 将结构体分割到多个文件。但是,如果我有以下文件:
main.go
1 2 3 4 5
| package main
func main() { sayHello() }
|
say_hello.go
1 2 3 4 5 6 7
| package main
import "fmt"
func sayHello() { fmt.Println("Hello!") }
|
输入 go run main.go 会出现以下错误:
1 2
| # command-line-arguments ./main.go:4:2: undefined: sayHello
|
解决这个问题,需要使用 go run .
使用下划线使数字清晰易读
1 2 3 4 5 6 7 8 9 10
| package main
import "fmt"
func main() { number := 10000000 better := 10_000_000
fmt.Println(number == better) }
|
在同一个包中使用不同的 test package
之前以为每个文件夹只能有一个 go package。后来发现对于名为 yourpackage
的包,你可以在同一目录下拥有另一个名为 yourpackage_test
的包,并在其中编写测试。
为什么要这么做呢?因为这样可以使用相同的包 yourpackage 来编写测试,所以未导出的函数也会可用。通过在 yourpackage_test 中编写测试,可以确保只测试暴露的行为。
多次传递相同参数
在使用字符串格式化函数时,总觉得必须重复使用多次的参数是很繁琐的事情:
1 2 3 4 5 6 7 8
| package main
import "fmt"
func main() { name := "Bob" fmt.Printf("My name is %s. Yes, you heard that right: %s\n", name, name) }
|
还有一种更方便的方法。可以只传递一次参数,并在 %s 动词中使用 %[order]s:
1 2 3 4 5 6 7 8
| package main
import "fmt"
func main() { name := "Bob" fmt.Printf("My name is %[1]s. Yes, you heard that right: %[1]s\n", name) }
|
希望大家今天能学到一些新东西。如果你也有一些 golang 小技巧,可以在评论区留言分享!
-------------The End-------------
subscribe to my blog by scanning my public wechat account
0%
文章来源: https://cloudsjhan.github.io/2024/06/12/%E5%88%86%E4%BA%AB%E6%9C%80%E8%BF%91%E5%AD%A6%E5%88%B0%E7%9A%84-5-%E4%B8%AA-Golang-%E5%B0%8F%E6%8A%80%E5%B7%A7/
如有侵权请联系:admin#unsafe.sh