栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

go基础 数组

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

go基础 数组

数组的声明和基本操作

数组的声明和基本操作为:

  •         声明的方法
  •         修改取值方法
  •         遍历的方法
package main

import "fmt"

func main(){
	// go语言中的数组和python中的list可以对应理解,slice和python的list更像
	// 静态语言中的数组:大小确定 类型一致
	//数组的声明 var courses [10] string
	// 数组的创建:静态语言对数据要求严格
	course := [5] string {"python", "go", "C++"}
	// 1. 数组支持修改和取值,不支持添加和删除

	fmt.Println(course[0])

	course[0] = "java"
	fmt.Println(course[0])


	// 数组的另外一种创建方式:带默认值
	a := [4] float32{}
	fmt.Println(a)	//默认为[0 0 0 0]

	var c=[5] int8{'A', 'b'}	//注意此处用单引号
	fmt.Println(c)	// [65 98 0 0 0]

	// 省略号的使用
	d := [...] int {1, 2, 3, 4, 5, 6}
	fmt.Println(d)

	e := [5] int {2: 100, 3: 77}
	fmt.Println(e)	// [0 0 100 77 0]

	// 求长度
	fmt.Println(len(e)) // 5
	// 数组的遍历
	for i, value := range course{
		fmt.Println(i, value)
	}

	// for range 求和
	sum := 0
	for _, value := range e{
		sum += value
	}
	fmt.Println(sum)

	// 使用for遍历数组
	sum2 := 0
	for i := 0; i 

go中的数组是值类型

python中的list和go中的数组在作为函数传递参数的时候有区别,需要当心。

python在浅拷贝的情况下是引用传递,而go是值传递。

python程序示例:

from typing import List
from copy import deepcopy

def func(course: List[str]):
    course[0] = 'baby'
    print(course)

courses = ['django', 'python', 'java']

func(deepcopy(courses))
print(courses)


func(courses)
print(courses)

 运行结果:

 go程序示例:

package main

import "fmt"

func fun1(toP [5] string){
	// []string这是切片类型
	toP[0] = "BABBY"
	fmt.Println(toP)
}

func main() {
	// 注意长度不一样的数组不是一个类型
	c1 := [3] string {"python", "go", "C"}
	c2 := [5] string {"python", "go", "C"}

	fmt.Printf("%T", c1)	// [3]string
	fmt.Println()
	fmt.Printf("%T", c2)	// [5]string
	fmt.Println()

	// go语言中函数传递参数的时候,数组作为参数,实际调用的时候是值传递
	// 而python C C++等语言是引用传递
	c3 := [5] string {"python", "go", "C"}
	fun1(c3)
	fmt.Println(c3)
}

运行结果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/908394.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号