其他分享
首页 > 其他分享> > go的数组与切片

go的数组与切片

作者:互联网

1.go的数组用法,如下代码

package main

import "fmt"

func main() {
	//数组和python的list可以大概的对应起来理解,切片和python的list更像
	//静态语言的数组:1.大小确定 2.类型一致
	var courses = [3]string{"django", "scrapy", "tornado"}

	//1.修改值,取值,删除之,添加值,注意:后两个不支持
	//取值,修改值
	fmt.Println(courses[0])
	courses[0] = "django3"
	fmt.Println(courses)

	//第二种操作数组的方法
	f := [...]int{0: 1, 4: 1, 9: 100}
	//数组操作的第一种场景,求数组长度
	fmt.Println(len(f))
	//数组的遍历
	for i, value := range courses {
		fmt.Println(i, value)
	}
	//使用for range 求和
	sum := 0
	for _, value := range f {
		sum += value
	}
	fmt.Println(sum)
	//使用for语句也可以进行遍历数组
	sum1 := 0
	for i := 0; i < len(f); i++ {
		sum1 += f[i]
	}
	fmt.Println(sum1)
}

打印结果
django
[django3 scrapy tornado]
10
0 django3
1 scrapy
2 tornado
102
102
注意:长度不一样的数组,类型是不一样的

2.切片
如下代码
package main

import “fmt”

func replace(myslice []string) {
myslice[0] = “physics”
}

func main() {
//什么是切片
//数组有一个很大的问题:大小确定,不能修改,切片,动态数组
//var courses []type
var courses []string //定义了一个切片,动态数组
courses = []string{“math”, “chinese”, “math”}
fmt.Printf("%T\n", courses)

//切片的另一种初始化方法make
//切片不是没有长度限制吗?为什么make初始化需要传递一个长度,传递了长度之后是不是意味着
//就像数组一样,被封印了
courses1 := make([]string, 5)
fmt.Printf("%T\n", courses1)
fmt.Println(len(courses1))

//第三种方法,通过数组变成一个切片
var courses2 = [5]string{"math", "chinese", "englist"}
subcourse := courses2[1:]
fmt.Println(subcourse)
fmt.Printf("%T", subcourse)

//切片不是值传递,是引用传递,和数组不以言
replace(courses)
fmt.Println(courses)

}

注意:make方法用法的比较多,而且,切片传递是引用传递。

3.go语言切片的常用操作
append,追加

//append
	courses = append(courses, "wwj")
	fmt.Println(courses)
	//append追加多个元素
	courses = append(courses, "hello", "world")
	fmt.Println(courses)

标签:string,courses,fmt,切片,Println,数组,go
来源: https://blog.csdn.net/weixin_43907175/article/details/121955537