数组的声明和基本操作为:
- 声明的方法
- 修改取值方法
- 遍历的方法
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)
}
运行结果:



