go基础类型~数组,切片,字符串
一 数组
1 数组的长度一旦定义不能变,长度属于数组的一部分,不同长度数组也不同,哪怕同一数据类型
2 定义方式
var a [3]string #定义长度为3的数组
var a [...]string{1,2,3,4} #不定长数组,长度由成员决定
var a [5]string{0:1,4:5} #根据下标:值的方式进行赋值
var a
3 遍历方式
1 for k,(索引下标)v(数值):=range a{fmt.Println(kv) }#推荐这种方式 =
2 for i:=0;i<len(a);i++ { a[i]} #更改数据成员值的时候可以使用这个
4 注意:
1 数组是不可变类型,无法增减成员,但是可以改变其中的值
var a [3]string{1,2,3}
func c(a *[3]string){a[0]=2}
func(a)
2数组包含普通数组和指针数组
二 切片
1 切片(Slice)是一个拥有相同类型元素的可变长度的序列。它是基于数组类型做的一层封装。它非常灵活,支持自动扩容。切片是一个引用类型,它的内部结构包含地址、长度和容量。切片一般用于快速地操作一块数据集合
2 特点
1 本身不保存数据,指向的是底层的引用
2 长度取决于内部的元素个数,是可增减成员
2 定义方式#看下面的例子里面不包含长度
var a []string
var a []string{1,1,2,3}
var a = make([]int, len(长度),cap(容量)-可以只写一个 代表长度和容量都是这个值)
len(a) 长度 和数组一致,用len(a)判断是否切片为空 cap(a)求容量
3 由于是引用类型,所以切片的复制后,新的对象改变成员值也会影响原切片的值
4 切片的遍历和数组一样的
5 切片增加成员-append()函数-必须用变量接受append的返回值
a=append(a,5,6,7)
a=append(a,b(切片))
6 切片减少成员-不存在删除函数
a[0:3]-我们可以理解成根据下标操作数值
a[0:0]-清除全部,
结构体切片-示例
type name struct {
hostname string
port int
}
var d =make([]*name,0) #第一种
var c = []*name{{hostname:"1.1.1.1",port:3306},{hostname: "2.2.2.2",port:3307}} #第二种
for _,v :=range c{ #循环切片
fmt.Println(*v)
d=append(d,v) #append赋值
}
fmt.Println(&d)
fmt.Println(&c)
三 字符串
strings.TrimRight (str string, cut string):去掉字符串右边 cut 字符只 eg str := strings.TrimRight("@love@", "@") 输出@love
strings.TrimSpace (str string):去掉字符串首尾空白字符 str := strings.TrimSpace(" love ") 输出love
strings.Split(str string,cut): 返回字符串切片str:=strings.TrimSpace("mysql5.6.12",".") 输出[mysql5 6 12 ]
strings.Contains(str,str1); 判断是否包含字符串 返回true/false
(countryCapitalMap, key) //删除方法
m map[key_data_type]value_data_type 作为参数输入
m map[struct_name]struct_name 特殊用法,map key或者value是结构体
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?