前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go 中学到的5个小技巧

Go 中学到的5个小技巧

作者头像
Lemon黄
发布2024-08-01 18:54:19
820
发布2024-08-01 18:54:19
举报
文章被收录于专栏:Lemon黄

以下是我在网上学习 Go 中学到的 5 个小技巧。

让编译器计算数组元素

在 Go 中很少会使用数组,使用较多的是切片。如果不喜欢自己编写数组中的元素数量,则可以使用 [...],编译器会自动计算数组的元素个数:

代码语言:javascript
复制
package main

import "fmt"

func main() {
    arr := [3]int{1, 2, 3}
    sameArr := [...]int{1, 2, 3} // 使用 ... 替代 3

    // 等价输出
    fmt.Println(arr)
    fmt.Println(sameArr)
}

使用 go run . 替代 go run main.go

当我们写一个小 demo 时,比较喜欢的是从 main.go 文件开始:

代码语言:javascript
复制
package main

import "fmt"

func main() {
    sayHello()
}

func sayHello() {
    fmt.Println("Hello!")
}

但是当 main.go 文件变大时,我们将会使用 main 包将代码拆分为多个文件,例如,我们有以下文件:main.go

代码语言:javascript
复制
package main

func main() {
    sayHello()
}

say_hello.go

代码语言:javascript
复制
package main

import "fmt"

func sayHello() {
    fmt.Println("Hello!")
}

现在,我们输入 go run main.go 将会出现以下错误:

代码语言:javascript
复制
# command-line-arguments
./main.go:4:2: undefined: sayHello

要解决此问题,除了列出全部文件 go run main.go say_hello.go,还可以使用 go run .

使用下划线让数字可读

代码语言:javascript
复制
package main

import "fmt"

func main() {
    number := 10000000
    better := 10_000_000

    fmt.Println(number == better)
}

同一个包中可以有不同的测试包

在 Go 中,我认为每个文件夹只能有 1 个包,但这并不完全正确。对于名为 yourpackage 的包,我们可以在同一目录中拥有另一个名为 yourpackage_test的包,我们可以在其中编写测试。尽管我们可以相同的包 yourpackage 编写测试,但这回导致包中有未导出的函数也可以直接使用。通过在 yourpackage_test 中编写测试,则可以仅测试公开的函数。

多次传递相同的参数

当使用字符串格式化函数时,我总是觉得很烦人,因为我必须重复使用多次的参数:

代码语言:javascript
复制
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

代码语言:javascript
复制
package main

import "fmt"

func main() {
    name := "Bob"
    fmt.Printf("My name is %[1]s. Yes, you heard that right: %[1]s\n", name)
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 莫奈黄 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 让编译器计算数组元素
  • 使用 go run . 替代 go run main.go
  • 使用下划线让数字可读
  • 同一个包中可以有不同的测试包
  • 多次传递相同的参数
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档