在这个例子中,你将学会用Go语言向控制台打印/显示数组或片断元素的不同方法。包括以下程序
- 使用带范围的For Loop打印数组
- 使用PrintF函数格式显示片断
- 阵列片的控制台打印,不含方括号
- 打印数组的地址或指针
- 以二进制形式打印字节的片断
为了理解这个例子,你应该具备Go语言的以下特点
示例程序。使用带范围的For循环打印一个数组或片断
在下面的程序中,使用速记赋值运算符声明了片和数组的初始值。
带范围的For循环被用来遍历数组或片断的元素。
每次迭代都有一个值,并使用Printf函数的格式化选项(int为%d,string为%s)将这些值打印到控制台。
package main
import "fmt"
func main() {
slice := []int{1, 2, 3}
array := [5]string{"one", "two", "three", "four", "five"}
for _, value := range slice {
fmt.Printf("%d\n", value)
}
for _, str := range array {
fmt.Printf("%s\n", str)
}
}
上述程序的输出是
1
2
3
one
two
three
four
five
示例程序2:使用Printf函数显示数组或片断的元素
在这个程序中,使用带有格式字符串的fmt Printf函数将数组或片断打印到控制台
Printf显示数组或片断的格式字符串
例如,数组或片断包含{"一"、"二"、"三"},我们将看到不同的打印值方式
- %v - 默认格式的值,即[一二三]。
- %+v - 默认格式的值+显示数字的符号 - [一二三] 。
- %#v - Go风格的数据值 - []string{"一", "二", "三"}。
- %+q - 对于数字,显示ASCII码 - ['\x01' '\x02' '\x03' '\x05' '\f'], 其他默认格式 - ["一" "二" "三"]
下面是一个显示数组或片断值到控制台的例子
package main
import "fmt"
func main() {
sliceStrings := []string{"one", "two", "three"}
arrayInt := [5]int{1, 2, 3, 5, 12}
// Print slice to console
fmt.Printf("%v\n", sliceStrings)
fmt.Printf("%+v\n", sliceStrings)
fmt.Printf("%#v\n", sliceStrings)
fmt.Printf("%+q\n", sliceStrings)
// Print array to console
fmt.Printf("%v\n", arrayInt)
fmt.Printf("%+v\n", arrayInt)
fmt.Printf("%#v\n", arrayInt)
fmt.Printf("%+q\n", arrayInt)
}
输出是
[one two three]
[one two three]
[]string{"one", "two", "three"}
["one" "two" "three"]
[1 2 3 5 12]
[1 2 3 5 12]
[5]int{1, 2, 3, 5, 12}
['\x01' '\x02' '\x03' '\x05' '\f']
示例程序3:打印数组或片断,不加括号
正如你所看到的,在上面的程序中,打印数组或片断到控制台时含有方括号。要去除方括号,我们必须使用fmt.Sprint函数去除方括号,并使用strings Trim()函数对结果进行修剪。
下面是一个删除数组或片断打印中的方括号的示例程序
package main
import (
"fmt"
"strings"
)
func main() {
sliceStrings := []string{"one", "two", "three"}
arrayInt := [5]int{1, 2, 3, 5, 12}
// Print slice without squrebrackets to console
fmt.Println(strings.Trim(fmt.Sprint(sliceStrings), "[]"))
// Print array without squrebrackets to console
fmt.Println(strings.Trim(fmt.Sprint(arrayInt), "[]"))
}
示例程序4 打印数组/片的地址或指针
创建数组或片断变量涉及到内存中的位置或地址。
为了检查数组或切片的地址,我们必须使用&(ampersand)和数组/切片变量名称
下面是一个打印指针的示例程序
package main
import (
"fmt"
)
func main() {
sliceStrings := []string{"one", "two", "three"}
arrayInt := [5]int{1, 2, 3, 5, 12}
fmt.Printf("Pointer or address of slice %p add array %p \n", &sliceStrings, &arrayInt)
}
输出是
Pointer or address of slice 0xc00004a400 add array 0xc000076030
示例程序5 以二进制比特的形式打印数组或片的字节数
下面是打印数组或片状数据的二进制数据的步骤顺序
- 声明字节片
- 使用for循环 使用%08b格式的Printf打印二进制形式的数据
package main
import (
"fmt"
)
func main() {
byteArray := []byte{25, 1}
for _, value := range byteArray {
fmt.Printf("%08b", value)
}
}