Go小技巧&易错点100例(十八)

正文:

使用下划线增加数字可读性

有时候我们代码里会定义很长的数字,虽然计算机程序能支持很大的数据的计算,但是对我们来说,可读性是一个需要考虑的点,特别是1后面全是0的时候。

但是这个问题在Go语言中是可以通过一个小技巧来解决的,如下代码:

go 复制代码
package main

import "fmt"

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

   fmt.Println(number == better)
}

number被赋值为10,000,000,而better也使用了相同的值,但是使用了下划线作为千位分隔符。从Go 1.13开始,数字字面量中可以使用下划线 **_****来增强可读性,但它不会改变数字的值。**所以,10_000_000和10000000是等价的。

格式化方法中多次使用相同参数

直接看代码:

go 复制代码
package main

import "fmt"

func main() {
   name := "Bob"
   fmt.Printf("My name is %[1]s. Yes, you heard that right: %[1]s\n", name)
}

%[1]s是一个占位符,它告诉Printf函数在这个位置插入一个字符串类型的变量。方括号中的数字1表示后面参数列表中的第一个参数(在这个例子中是变量name)。

字符串中的%[1]s出现了两次,它们都引用的是同一个参数(即name),因此都会被替换为"Bob"。

这里的关键点是占位符%[1]s的使用,它允许你在格式化字符串中多次引用同一个参数,而无需在参数列表中重复提供该参数。

数组的模糊计数

...这个标识在Go语言中可以说是比较常见了,除了数组拼接会遇到以外,在下面的代码中也会使用到:

go 复制代码
package main

import "fmt"

func main() {
   arr := [3]int{1, 2, 3}
   sameArr := [...]int{1, 2, 3}

   fmt.Println(arr)
   fmt.Println(sameArr)
}

定义并初始化数组:

go 复制代码
arr := [3]int{1, 2, 3}

这里定义了一个包含3个整数的数组arr,并初始化为{1, 2, 3}。[3]int指定了数组的长度为3,并且数组中的元素是整数类型。

使用省略号定义并初始化数组:

go 复制代码
sameArr := [...]int{1, 2, 3}

这里定义了另一个数组sameArr,并使用...来自动计算数组的长度。数组也被初始化为{1, 2, 3}。这种方式允许你不显式地指定数组的长度,编译器会根据初始化时提供的元素数量自动确定数组的长度。在这个例子中,sameArr的长度也会被自动设置为3。

其中,arr是显式指定长度的数组,而sameArr是使用省略号自动计算长度的数组。两者在功能上是等效的,但sameArr的定义方式更为灵活,因为它不需要你提前知道数组的确切长度。

本篇完成~

相关推荐
蹊黎11 分钟前
C++中vector类的部分简单实现
开发语言·c++·visual studio
大鸡腿同学6 小时前
手心向上,手心向下
后端
程序猿追6 小时前
kotlin-retry 接入鸿蒙后,怎样确认它真的会停止重试
开发语言·kotlin·harmonyos
我是人✓6 小时前
Java文件上传三方式对比:从传统到SpringBoot
java·开发语言
智能直播6 小时前
网络RTMP拉流不卡顿、声音不同步,一文讲透缓冲区、时间戳
开发语言·ffmpeg·php·音视频·视频编解码
CCblandy7 小时前
令牌桶在 0.9 倍负载超发 19%、固定窗口边界放行 20 个:四种限流算法同构实测
后端·python·算法·性能优化·架构
墨云安全7 小时前
内网资产无法暴露到公网,怎么做安全检测?2026 年内网渗透测试的落地路径
开发语言·安全·网络安全·渗透测试·php
摇滚侠7 小时前
《计算机是如何工作的:人人都能懂的计算机软硬件工作原理》第 9 章 机器码与汇编语言 阅读笔记 9
java·开发语言·笔记
Cc.Y7 小时前
Java零基础入门:深入Java核心:文件IO与序列化全解
java·开发语言·python
凤山老林8 小时前
Spring Boot 集成 Sa-Token 实现高可用权限认证:登录鉴权、动态路由权限与接口防重放实战
spring boot·后端·sa-token·bootstrap