Golang 如何判斷數(shù)組某個(gè)元素是否存在 (isset)
如,現(xiàn)在需要判斷命令行是否傳了參數(shù),即 os.Args[1] 是否存在
如果使用下述的判斷:
package main import ( "fmt" "os" ) func main() { if os.Args[1] != "" { fmt.Println("aaa") } else { fmt.Println("bbb") } }
會(huì)報(bào)錯(cuò):index out of range
panic: runtime error: index out of range goroutine 1 [running]: main.main() /root/workspace/go/testn.go:9 +0x100 exit status 2
正確處理方法:
通過(guò)遍歷的方式判斷 key = 1 是否存在
package main import ( "fmt" "os" ) func main() { var target string // 用來(lái)獲取最終需要的os.Args[1] for k, v := range(os.Args) { if k == 1 { // 假設(shè)需要獲取os.Args[k], k = 1 target = v } } if target != "" { // 不為空則表示os.Arg[1]存在 fmt.Printf("os.Arg[1] = %s", target) } }
補(bǔ)充:golang中的正則匹配&判斷元素是否在slice里或者數(shù)組里
1、正則匹配
package main import ( "fmt" "regexp" ) func main() { //pattern := "\\d+" //反斜杠要轉(zhuǎn)義 pattern := "[a-zA-Z]" //匹配字母 str := "a1.22.35.4" result, _ := regexp.MatchString(pattern, str) fmt.Println(result) //true }
2、判斷元素是否在slice里或者數(shù)組里
package main import "fmt" import "github.com/wxnacy/wgo/arrays" //go get github.com/wxnacy/wgo/arrays 安裝包 func main() { str := "342" var numbers []string numbers = append(numbers, "3332", "342", "ssddd", "ssss", "%%%%") index := arrays.ContainsString(numbers, str) if index == -1 { fmt.Printf("not exists") //-1說(shuō)明不存在 } else { fmt.Println(index) //存在則會(huì)返回元素的下標(biāo) } }
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
golang雪花算法實(shí)現(xiàn)64位的ID的示例代碼
本文展示了使用Go語(yǔ)言實(shí)現(xiàn)雪花算法生成64位ID的示例代碼,雪花算法通過(guò)當(dāng)前時(shí)間戳、工作節(jié)點(diǎn)ID、數(shù)據(jù)中心ID和序列號(hào)生成唯一的64位ID,確保在分布式系統(tǒng)中的唯一性和時(shí)間順序性,感興趣的可以了解一下2024-09-09Go實(shí)現(xiàn)數(shù)據(jù)脫敏的方案設(shè)計(jì)
在一些常見(jiàn)的業(yè)務(wù)場(chǎng)景中可能涉及到用戶的手機(jī)號(hào),銀行卡號(hào)等敏感數(shù)據(jù),對(duì)于這部分的數(shù)據(jù)經(jīng)常需要進(jìn)行數(shù)據(jù)脫敏處理,就是將此部分?jǐn)?shù)據(jù)隱私化,防止數(shù)據(jù)泄露,所以本文給大家介紹了Go實(shí)現(xiàn)數(shù)據(jù)脫敏的方案設(shè)計(jì),需要的朋友可以參考下2024-05-05golang http使用踩過(guò)的坑與應(yīng)對(duì)方式
這篇文章主要介紹了golang http使用踩過(guò)的坑與應(yīng)對(duì)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01通過(guò)與Java功能上的對(duì)比來(lái)學(xué)習(xí)Go語(yǔ)言
這篇文章主要介紹了通過(guò)與Java功能上的對(duì)比來(lái)學(xué)習(xí)Go語(yǔ)言的相關(guān)資料,需要的朋友可以參考下2023-02-02