ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

go的数组与切片

2021-12-15 17:33:14  阅读:139  来源: 互联网

标签:string courses fmt 切片 Println 数组 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有