真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

golang中的一些實(shí)用功能

0.1、索引

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)的列表。

1、檢查數(shù)組中元素是否存在

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
}

2、檢查給定的時(shí)間是否在兩個(gè)時(shí)間戳之間

給定兩個(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
}

3、查找特定時(shí)區(qū)的當(dāng)前時(shí)間戳

首先使用 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)
}

4、從數(shù)組中刪除重復(fù)項(xiàng)

我們定義了另一個(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
}

5、隨機(jī)打亂數(shù)組

要打亂數(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
}

6、反轉(zhuǎn)數(shù)組

將數(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
}

7、將切片轉(zhuǎn)換為某個(gè)分隔符分隔的字符串

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)
}

8、將給定的字符串轉(zhuǎn)換為snake_case

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)
}

新聞名稱:golang中的一些實(shí)用功能
文章位置:http://weahome.cn/article/dsoicod.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部