1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/dxvgef-tsing

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
utils.go 1.1 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
dxvgef Отправлено 26.04.2023 11:15 a4e0b86
package tsing
import (
"bytes"
"path"
"unsafe"
)
func strToBytes(s string) []byte {
return *(*[]byte)(unsafe.Pointer(
&struct {
string
Cap int
}{s, len(s)},
))
}
func bytesToStr(b []byte) string {
return *(*string)(unsafe.Pointer(&b))
}
func joinPaths(absolutePath, relativePath string) string {
if relativePath == "" {
return absolutePath
}
finalPath := path.Join(absolutePath, relativePath)
if lastChar(relativePath) == '/' && lastChar(finalPath) != '/' {
return finalPath + "/"
}
return finalPath
}
func lastChar(str string) uint8 {
if str == "" {
panic("The length of the string can't be 0")
}
return str[len(str)-1]
}
func min(a, b int) int {
if a <= b {
return a
}
return b
}
func longestCommonPrefix(a, b string) int {
i := 0
max := min(len(a), len(b))
for i < max && a[i] == b[i] {
i++
}
return i
}
func countParams(path string) uint16 {
var n uint16
s := strToBytes(path)
n += uint16(bytes.Count(s, strColon))
n += uint16(bytes.Count(s, strStar))
return n
}
func countSections(path string) uint16 {
s := strToBytes(path)
return uint16(bytes.Count(s, strSlash))
}

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/dxvgef-tsing.git
git@api.gitlife.ru:oschina-mirror/dxvgef-tsing.git
oschina-mirror
dxvgef-tsing
dxvgef-tsing
master