https://waterflow.link/articles/
潢川網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)建站,潢川網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為潢川上千多家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的潢川做網(wǎng)站的公司定做!
通過使用一些通用代碼來節(jié)省時(shí)間,而無需單獨(dú)實(shí)現(xiàn)它們。以下是一些開發(fā)中經(jīng)常會(huì)用到的函數(shù)實(shí)現(xiàn)的列表。
Golang 沒有預(yù)定義的函數(shù)來檢查數(shù)組中元素的存在。以下代碼片段為您完成相同的工作。
很簡(jiǎn)單,遍歷一遍數(shù)組檢查元素是否存在。
package main
import "fmt"
func main() {
slice := []string{"apple", "grapes", "mango"}
if Contains(slice, "mango") {
fmt.Println("元素存在")
} else {
fmt.Println("元素不存在")
}
}
func Contains(slice []string, element string) bool {
for _, i := range slice {
if i == element {
return true
}
}
return false
}
給定兩個(gè)時(shí)間戳,用于檢查當(dāng)前時(shí)間是否位于兩者之間。 Golang 時(shí)間包提供了一個(gè)內(nèi)置函數(shù)來檢查它。我們使用了 .After() 和 .Before() 方法,如果兩者都為真,那么我們可以承認(rèn)當(dāng)前時(shí)間在給定時(shí)間之間。
package main
import (
"fmt"
"time"
)
func main() {
currentTime := time.Now()
// 當(dāng)前時(shí)間的18小時(shí)后
rightTime := time.Now().Add(time.Hour * 18)
// 當(dāng)前時(shí)間的10小時(shí)之前
leftTime := time.Now().Add(-time.Hour * 10)
if IsBetweenTime(currentTime, leftTime, rightTime) {
fmt.Println("當(dāng)前時(shí)間在范圍內(nèi)")
} else {
fmt.Println("當(dāng)前時(shí)間不在范圍內(nèi)")
}
}
func IsBetweenTime(curTime, leftTime, rightTime time.Time) bool {
if curTime.After(leftTime) && curTime.Before(rightTime) {
return true
}
return false
}
首先使用 time.LoadLocation() 加載給定時(shí)區(qū)的位置,然后將其與 time.Now.In() 一起使用,以獲取給定時(shí)區(qū)的當(dāng)前時(shí)間。您可以將 timeZone 變量的值修改為所需的值。
package main
import (
"fmt"
"time"
)
func main() {
timeZone := "Asia/Kolkata"
currentTime := CurrentTimeByTimeZone(timeZone)
fmt.Println("currentTime : ", currentTime)
timeZone = "Asia/ShangHai"
currentTime = CurrentTimeByTimeZone(timeZone)
fmt.Println("currentTime : ", currentTime)
}
func CurrentTimeByTimeZone(timeZone string) time.Time {
loc, _ := time.LoadLocation(timeZone)
return time.Now().In(loc)
}
我們定義了另一個(gè)切片并通過檢查新切片中是否已存在該值來分配第一個(gè)值。它返回沒有重復(fù)的切片。
package main
import (
"fmt"
)
func main() {
fruits := []string{"Mango", "Grapes", "Kiwi", "Apple", "Grapes"}
fmt.Println("刪除重復(fù)項(xiàng)之前 : ", fruits)
dulicatesRemovedArray := SliceUnique(fruits)
fmt.Println("刪除重復(fù)項(xiàng)之后 : ", dulicatesRemovedArray)
}
func SliceUnique(intSlice []string) []string {
keys := make(map[string]bool)
list := make([]string, 0)
for _, entry := range intSlice {
if _, value := keys[entry]; !value {
keys[entry] = true
list = append(list, entry)
}
}
return list
}
要打亂數(shù)組中的元素,我們必須使用隨機(jī)數(shù)然后交換元素。
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
array := []string{"India", "US", "Canada", "UK"}
fmt.Println("Origin array : ", array)
shuffleArr := Shuffle(array)
fmt.Println("Shuffled array : ", shuffleArr)
}
func Shuffle(array []string) []string {
// New 返回一個(gè)使用來自 src 的隨機(jī)值的新 Rand 生成其他隨機(jī)值
random := rand.New(rand.NewSource(time.Now().UnixNano()))
for i := len(array) - 1; i > 0; i-- {
// Intn 以 int 形式返回半開區(qū)間 [0,n) 中的非負(fù)偽隨機(jī)數(shù)。
j := random.Intn(i + 1)
array[i], array[j] = array[j], array[i]
}
return array
}
將數(shù)組從中間(長(zhǎng)度/ 2)分開,并在 pos 變量的幫助下交換兩個(gè)跨邊界的位置。即如果有長(zhǎng)度為 6 的數(shù)組,則交換將按數(shù)組 [2] <-> 數(shù)組 [3]、數(shù)組 [1] <-> 數(shù)組 [4] 和數(shù)組 [0] <-> 數(shù)組 [5] 的順序進(jìn)行]。
package main
import (
"fmt"
)
func main() {
a := []int{1, 2, 3, 4, 5, 6, 7}
reverseArray := ReverseSlice(a)
fmt.Println("反轉(zhuǎn)后 : ", reverseArray)
}
func ReverseSlice(a []int) []int {
for i := len(a)/2 - 1; i >= 0; i-- {
pos := len(a) - 1 - i
a[i], a[pos] = a[pos], a[i]
}
return a
}
package main
import (
"fmt"
"strconv"
"strings"
)
func main() {
result := ConvertSliceToString("&", []int{10, 20, 30, 40})
fmt.Println("Slice converted string : ", result)
}
func ConvertSliceToString(separator string, input []int) string {
var output []string
for _, i := range input {
output = append(output, strconv.Itoa(i))
}
return strings.Join(output, separator)
}
package main
import (
"fmt"
"regexp"
"strings"
)
func main() {
snakeCase := ConvertToSnakeCase("ILikeProgrammingINGo")
fmt.Println("String in snake case : ", snakeCase)
}
func ConvertToSnakeCase(input string) string {
var matchChars = regexp.MustCompile("(.)([A-Z][a-z]+)")
var matchAlpha = regexp.MustCompile("([a-z0-9])([A-Z])")
snake := matchChars.ReplaceAllString(input, "${1}_${2}")
snake = matchAlpha.ReplaceAllString(snake, "${1}_${2}")
return strings.ToLower(snake)
}