在这些例子中,你将学习在Go语言中打印/显示array 或slice 元素到控制台的不同方法。
以下是所涉及的程序:
- 使用带范围的For Loop打印数组
- 使用PrintF函数格式显示片断
- 数组切片的控制台打印,无方括号([])
- 打印数组的地址或指针
- 以二进制形式打印字节的片断
为了理解这个例子,你应该掌握Go语言的以下特点。
示例程序:使用带范围的For循环打印一个数组或片断
在下面的程序中:
声明了slice 和array ,并使用了初始化值shorthand assignment operator.
对于一个有范围的循环,该表格用来迭代一个array 或slice.
每次迭代都有一个值,并使用Printf function ,用格式化选项(%d代表int,%s代表string)将值打印到控制台。
以下是一个程序的代码print a slice using for loop in golang.
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函数显示数组或片状元素
在这个程序中,Array 或slice 被打印到控制台,使用fmt Printf function 与格式字符串。
用于显示数组或片断的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 function ,从输出中去掉方括号。并使用strings Trim() function ,对结果进行修剪。
下面是一个打印数组或片断到控制台的示例程序,没有方括号([])
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), "[]"))
}
输出:
one two three
1 2 3 5 12
示例程序4: 打印数组/片的地址或指针
在Golang中,创建一个数组或片断变量涉及到内存中的位置或地址。
要检查一个数组或片断的地址,我们必须使用&(安培尔)和数组/片断变量名
下面是一个打印数组指针的例子程序
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:以二进制比特形式打印数组或片的字节数
下面是打印来自Array 或Slice 数据的二进制数据的一系列步骤。
- 声明 字节片
- 使用for循环 打印二进制形式,使用
Printf,格式为%08b
package main
import (
"fmt"
)
func main() {
byteArray := []byte{25, 1}
for _, value := range byteArray {
fmt.Printf("%08b", value)
}
}
输出:
0001100100000001
结论
在本教程中,你学到了多个例子和方法,使用fmt printf for循环来迭代和显示数组和分片,并打印地址和字节。