知识分享之Golang——用于快速判断指定字符串是否存在于一个数组中的工具函数...

知识分享之Golang——用于快速判断指定字符串是否存在于一个数组中的工具函数

背景

知识分享之Golang篇是我在日常使用Golang时学习到的各种各样的知识的记录,将其整理出来以文章的形式分享给大家,来进行共同学习。欢迎大家进行持续关注。

知识分享系列目前包含Java、Golang、Linux、Docker等等。

开发环境

  • 系统:windows10
  • 语言:Golang
  • golang版本:1.18

内容

本节我们分享一个用于快速判断指定字符串是否存在于一个数组中的工具函数
以下是我们使用到的函数

func In(target string, str_array []string) bool {
    sort.Strings(str_array)
    index := sort.SearchStrings(str_array, target)
    if index < len(str_array) && str_array[index] == target {
        return true
    }
    return false
}

内容参考:https://blog.51cto.com/u_15023263/2558348

本文声明:
88x31.png
知识共享许可协议
本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。
### Golang 中切片的用法和特性 #### 切片的基础概念 在Go语言中,切片(slice)是在数组基础上构建的一种抽象数据类型。切片提供了更灵活的数据结构操作方式,允许动态调整长度并支持高效的内存管理[^1]。 #### 创建与初始化切片 可以通过多种方法创建切片: - 使用 `make` 函数来分配一个新的底层数组,并返回指向该数组起始位置的一个指针作为切片: ```go s := make([]int, length, capacity) ``` - 或者通过字面量定义一个固定大小的数组再将其转换成切片: ```go a := [...]string{"apple", "banana", "cherry"} fruits := a[:] // 将整个数组a转化为切片fruits ``` 也可以直接声明一个指定长度的字符串切片用于存储文件中的数字字符序列[^2]: ```go digits := []byte{} ``` #### 访问元素及遍历 访问单个元素的方式与其他编程语言相似,即采用索引形式 `s[index]` 来获取特定位置上的值;而要迭代处理所有成员,则可以利用for循环配合内置函数len()实现: ```go for i := 0; i < len(s); i++ { fmt.Printf("%d ", s[i]) } // 或者使用range简化语法糖 for idx, val := range s { fmt.Printf("index=%d value=%v\n", idx, val) } ``` #### 修改切片内容 由于切片内部维护着对底层连续内存区域的引用关系,在修改某个具体项时实际上就是改变相应地址处的内容。因此任何针对原生类型的赋值都会影响到实际存在的那份共享资源。 需要注意的是当超出当前容量(capacity)范围追加新项目(`append`)会触发重新分配更大的空间给新的底层数组副本从而不影响旧版本的状态[^3]. #### 高效性能表现 得益于其独特的设计思路——既保留了随机存取的优势又兼顾到了可变尺寸的需求,使得Go下的切片成为了一种非常高效实用的选择方案之一。特别是在面对大量同质化对象的操作场景下更是如此。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CN華少

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值