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