go语言基础之数组和切片

Array(数组)

数组是同一种数据类型元素的集合,在GO语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化。基本语法:

// 定义一个长度为3, 元素类型为 int 的数组 a
var a [3]int

数组的定义

var 数组变量名 [数组长度]数组类型

比如:var a [3]int, 数组的长度必须是常量,并且长度是数组类型的一部分。一旦定义长度不能变。[5]int 和 [3]int 是不同的类型。

var a [3]int
var b [4]int
a = b  // 不可以这样做,因为此时a和b是不同的类型

数组可以通过下标进行访问,下标从0开始,最后一个元素的下标是:len-1, 访问越界(下标在合法范围之外),则触发访问越界,会panic。

数组的初始化

方法一

初始化数组时可以使用初始化列表来设置数组元素的值。

func main() {
    var testArray [3]int                              //数组会初始化为int类型的零值
    var numArray = [3]int{1, 2}                       //使用指定的初始化值完成初始化
    var cityArray = [3]string{"北京", "上海", "深圳"}  //使用指定的初始化值完成初始化
    fmt.Println(testArray)    //[0 0 0]
    fmt.Println(numArrary)    //[1 2 0]
    fmt.Println(cityArray)    //[北京 上海 深圳]
}

方法二

按照上面的方法每次都要确保提供的初始初始值和数组

输入一个切片比如: []int{1,2,3} 返回 1 2 3

package main

import (
	"fmt"
	"math/rand"
	"strconv"
	"strings"
)

func GenSlice(n int) []int {

	slice := make([]int,0,n)

	for i:=0; i<n; i++{
		slice = append(slice,  rand.Intn(n))
	}

	return slice
}

func Slice2String(sli []int) string {
	var sb  strings.Builder

	for _, v := range sli {
		sb.WriteString(strconv.Itoa(v))
		sb.WriteString(" ")
	}
	
	s := sb.String()
	// 去除首位空格
	return strings.Trim(s, " ")
        // 或者使用
	// return s[0: len(s)-1]
}

func main() {
	sli := GenSlice(100)

	res := Slice2String(sli)
	fmt.Println(res)
}
posted @ 2021-07-30 17:31  zhanghuiyan  阅读(32)  评论(0)    收藏  举报