首页 > 编程语言 >PHP转Go系列 | 推荐一个强大的Go语言工具函数库

PHP转Go系列 | 推荐一个强大的Go语言工具函数库

时间:2024-07-25 09:18:37浏览次数:14  
标签:main 函数库 fmt result2 result1 Println validator Go PHP

大家好,我是码农先森。

从 PHP 转到 Go 的朋友,常常会因为没有便捷的工具函数而感到苦恼。PHP 写的多了就会形成路径依赖,在写 Go 的时候时不时就会想到 PHP 强大的数组函数。当然写 Go 的 PHPer 也想拥有这么强大的工具函数,在这个开源的编程世界总有一些伟大的程序员做着贡献,正是有了他们的存在,因此便有了 lancet 这样一个强大的 Go 语言工具函数库,下面我介绍一些常用的工具函数「文末附上了手册地址」。

ContainChinese 验证字符串是否包含中文字符。

import (
    "fmt"
    "github.com/duke-git/lancet/v2/validator"
)

func main() {
    result1 := validator.ContainChinese("你好")
    result2 := validator.ContainChinese("你好hello")
    result3 := validator.ContainChinese("hello")

    fmt.Println(result1)
    fmt.Println(result2)
    fmt.Println(result3)

    // Output:
    // true
    // true
    // false
}

IsChineseMobile 验证字符串是否是中国手机号码。

import (
    "fmt"
    "github.com/duke-git/lancet/v2/validator"
)

func main() {
    result1 := validator.IsChineseMobile("13263527980")
    result2 := validator.IsChineseMobile("434324324")

    fmt.Println(result1)
    fmt.Println(result2)

    // Output:
    // true
    // false
}

IsChineseIdNum 验证字符串是否是中国身份证号码。

import (
    "fmt"
    "github.com/duke-git/lancet/v2/validator"
)

func main() {
    result1 := validator.IsChineseIdNum("210911192105130715")
    result2 := validator.IsChineseIdNum("123456")

    fmt.Println(result1)
    fmt.Println(result2)

    // Output:
    // true
    // false
}

IsChinesePhone 验证字符串是否是中国电话座机号码。

import (
    "fmt"
    "github.com/duke-git/lancet/v2/validator"
)

func main() {
    result1 := validator.IsChinesePhone("010-32116675")
    result2 := validator.IsChinesePhone("123-87562")

    fmt.Println(result1)
    fmt.Println(result2)

    // Output:
    // true
    // false
}

IsCreditCard 验证字符串是否是信用卡号码。

import (
    "fmt"
    "github.com/duke-git/lancet/v2/validator"
)

func main() {
    result1 := validator.IsCreditCard("4111111111111111")
    result2 := validator.IsCreditCard("123456")

    fmt.Println(result1)
    fmt.Println(result2)

    // Output:
    // true
    // false
}

IsEmail 验证字符串是否是有效电子邮件地址。

import (
    "fmt"
    "github.com/duke-git/lancet/v2/validator"
)

func main() {
    result1 := validator.IsEmail("[email protected]")
    result2 := validator.IsEmail("a.b@@com")

    fmt.Println(result1)
    fmt.Println(result2)

    // Output:
    // true
    // false
}

Contain 判断 slice 是否包含 value。

import (
    "fmt"
    "github.com/duke-git/lancet/v2/slice"
)

func main() {
    result1 := slice.Contain([]string{"a", "b", "c"}, "a")
    result2 := slice.Contain([]int{1, 2, 3}, 4)

    fmt.Println(result1)
    fmt.Println(result2)

    // Output:
    // true
    // false
}

Chunk 按照 size 参数均分 slice。

import (
    "fmt"
    "github.com/duke-git/lancet/v2/slice"
)

func main() {
    arr := []string{"a", "b", "c", "d", "e"}

    result1 := slice.Chunk(arr, 1)
    result2 := slice.Chunk(arr, 2)

    fmt.Println(result1)
    fmt.Println(result2)

    // Output:
    // [[a] [b] [c] [d] [e]]
    // [[a b] [c d] [e]]
}

Equal 检查两个切片是否相等,相等条件:切片长度相同,元素顺序和值都相同。

import (
    "fmt"
    "github.com/duke-git/lancet/v2/slice"
)

func main() {
    s1 := []int{1, 2, 3}
    s2 := []int{1, 2, 3}
    s3 := []int{1, 3, 2}

    result1 := slice.Equal(s1, s2)
    result2 := slice.Equal(s1, s3)

    fmt.Println(result1)
    fmt.Println(result2)

    // Output:
    // true
    // false
}

Comma 用逗号每隔3位分割数字/字符串,支持前缀添加符号。参数 value 必须是数字或者可以转为数字的字符串, 否则返回空字符串。

package main

import (
    "fmt"
    "github.com/duke-git/lancet/v2/formatter"
)

func main() {
    result1 := formatter.Comma("123", "")
    result2 := formatter.Comma("12345", "$")
    result3 := formatter.Comma(1234567, "¥")

    fmt.Println(result1)
    fmt.Println(result2)
    fmt.Println(result3)

    // Output:
    // 123
    // $12,345
    // ¥1,234,567
}

ForEach 对 map 中的每对 key和 value 执行 iteratee 函数。

package main

import (
    "fmt"
    "github.com/duke-git/lancet/v2/maputil"
)

func main() {
    m := map[string]int{
        "a": 1,
        "b": 2,
        "c": 3,
        "d": 4,
    }

    var sum int

    maputil.ForEach(m, func(_ string, value int) {
        sum += value
    })

    fmt.Println(sum)

    // Output:
    // 10
}

Keys 返回 map 中所有 key 的切片。

package main

import (
    "fmt"
    "github.com/duke-git/lancet/v2/maputil"
)

func main() {
    m := map[int]string{
        1: "a",
        2: "a",
        3: "b",
        4: "c",
        5: "d",
    }

    keys := maputil.Keys(m)
    sort.Ints(keys)

    fmt.Println(keys)

    // Output:
    // [1 2 3 4 5]
}

Merge 合并多个 maps 相同的 key 会被后来的 key 覆盖。

package main

import (
    "fmt"
    "github.com/duke-git/lancet/v2/maputil"
)

func main() {
    m1 := map[int]string{
        1: "a",
        2: "b",
    }
    m2 := map[int]string{
        1: "1",
        3: "2",
    }

    result := maputil.Merge(m1, m2)

    fmt.Println(result)

    // Output:
    // map[1:c 2:b 3:d]
}

RandInt 生成随机int, 范围[min, max)。

package main

import (
    "fmt"
    "github.com/duke-git/lancet/v2/random"
)

func main() {
    rInt := random.RandInt(1, 10)
    fmt.Println(rInt)
}

RandString 生成给定长度的随机字符串,只包含字母(a-zA-Z)。

package main

import (
    "fmt"
    "github.com/duke-git/lancet/v2/random"
)

func main() {
    randStr := random.RandString(6)
    fmt.Println(randStr) //pGWsze
}

以上这些只是部分的工具函数,如果想查看所有内容可以访问 https://www.golancet.cn/ 该网站。

再强大的函数工具库也不可能涵盖所有的场景,随着现在 AI 的盛行,AI 的编程辅助工具也应运而生。在这里我再分享一个免费的 PHP 代码直接转换 Go 代码工具,这个工具简直是 PHP 程序员的福音,直接将 PHP 代码贴上便自动生成了 Go 代码。

最后附上这个 AI 工具的地址 https://www.codeconvert.ai/php-to-golang-converter 赶快去使用吧。


欢迎关注、分享、点赞、收藏、在看,我是微信公众号「码农先森」作者。

标签:main,函数库,fmt,result2,result1,Println,validator,Go,PHP
From: https://www.cnblogs.com/yxhblogs/p/18305739

相关文章

  • 如何使用 Django 在 neo4j 中创建节点
    我正在开发一个网络应用程序。对于后端,我选择了Django,作为数据库,我想使用图形数据库,所以我选择了neo4j。有一个Python库neomodel用于使用neo4j和一个特定的库django_neomodel要合并|||使用Django。neomodel我可以使用Django和neo4j从......
  • Cargo镜像源
    在Windows系统默认为:%USERPROFILE%.cargo,在类Unix系统默认为:$HOME/.cargo,在此目录下新建config.toml文件,填写内容如下:字节镜像源[source.crates-io]replace-with='rsproxy-sparse'[source.rsproxy]registry="https://rsproxy.cn/crates.io-index"#稀疏索......
  • php 访问网站时 如何不直接显示index.php,而是显示目录? .htaccess 文件
    想要的效果输入网址后显示目录,而不是indxe.phpapache的方法修改“.htaccess文件DirectoryIndexindex.phpindex.html 参考:https://www.php.cn/faq/693671.html其他.htaccess文件的使用https://www.cnblogs.com/helloworld3/p/4468582.html nginx的方法https:/......
  • Go 实用技巧
    Golang实用技巧Golang实用技巧Context1.为了gorouines更可靠,避免实用context.Background()2.不幸得是,context.Value不是我们的朋友3.使用context.WithoutCancel保持context活跃Context1.为了gorouines更可靠,避免实用context.Background()在我们同时管理多......
  • Django 表单常用字段参数
    DjangoForm表单,常用表单字段-CSDN博客        在Django中,表单(Form)是用来处理HTML表单数据的重要工具。Django的表单API允许你定义表单字段及其验证规则。每个表单字段都可以通过多种参数来定制其行为。以下是一些常用的表单字段参数:label:字段的标签,用于在HTML表单......
  • centos7 升级curl命令,php不变问题
    centos7升级curl命令开篇:默认的curl版本太旧,需要升级,才可以支持http2协议1、安装repo代码语言:javascript复制[root@~]#rpm-Uvhhttp://www.city-fan.org/ftp/contrib/yum-repo/rhel6/x86_64/city-fan.org-release-2-1.rhel6.noarch.rpm2、查看当前r......
  • c++(4) pangolin可视化多线程
     CMakeLists.txtcmake_minimum_required(VERSION2.8)project(3DTo3D)set(CMAKE_CXX_STANDARD11)set(CMAKE_BUILD_TYPERelease)find_package(PangolinREQUIRED)#可视化工具库include_directories(${Pangolin_INCLUDE_DIRS})#OpenCV#find_package(OpenCV......
  • php使用ZipArchive解压压缩包
    //处理照片压缩包$zip=new\ZipArchive();//获取压缩包内容照片数量$path='static/oa/img/staImport/'.date('Ymd').'/'.date('His');if($zip->open($param['fileUrl'])===TRU......
  • PHP现代化构建工具: 无需修改任何代码和扩展将你的ThinkPHP项目性能提高20倍
    我要分享一个令人激动的黑科技:PRipple使用这个项目能够在无需修改任何代码且无需第三方扩展的前提下,将你的Laravel项目性能提高20倍。他仅仅依赖于PHP原生的pcntl/posix/fiber/sockets项目灵感这个项目灵感来源于PHP8.1引入的fiber特性,以及Swoole和Workerman的......
  • 如何使用 Google Drive API 识别和删除大型 Google Takeout ZIP 文件?
    如何使用GoogleDriveAPI识别和删除大型GoogleTakeoutZIP文件?正文:我遇到一个问题:GoogleTakeout不断在我的Google云端硬盘中创建大型ZIP文件,导致其达到存储限制。我需要使用GoogleDriveAPI以编程方式识别和删除这些文件。我注意到文件名遵循类似takeou......