【PHPer转GO】必啃20个高频标准库函数
·
网络请求/IP 组
- net.SplitHostPort
Go惯例:拆分host:port,分离地址与端口
PHP差异:host, port, err := net.SplitHostPort(r.RemoteAddr)$_SERVER['REMOTE_ADDR']直接剥离端口,Go原生不封装 - net.ParseIP
校验字符串是否为合法IPv4/IPv6,返回net.IP类型net.ParseIP("127.0.0.1") != nil - net.IP.IsPrivate
判断是否内网IP,Go专属便捷方法 - http.CanonicalHeaderKey
HTTP请求头标准化大写,Go中间件通用写法,统一x-real-ip/X-Real-IP
字符串处理组(替代PHP大量字符串函数)
- strings.Cut
Go1.20+惯例,分割字符串,替代PHPexplode极简用法left, right, ok := strings.Cut(str, ",") - strings.TrimSpace
去除首尾空白,等同trim(),Go校验参数必用 - strings.Contains
包含判断 = PHPstr_contains - strings.HasPrefix/HasSuffix
前缀后缀匹配,路由、路径判断高频 - strings.Split
切片分割 =explode
错误与参数处理组(Go核心思想,无try-catch)
- fmt.Errorf + %w
Go标准错误包装,链路错误溯源,行业统一惯例fmt.Errorf("加载失败: %w", err) - errors.Is
判断原始错误类型,替代PHP异常判断 - errors.As
断言自定义错误结构体
路径/文件操作组
- filepath.Join
跨平台拼接路径,替代手动拼接/,Windows/Linux通用 - filepath.Base
获取文件名 = PHPbasename() - os.ReadFile/os.WriteFile
极简读写文件,Go1.16+主流用法,替代ioutil废弃方法
类型转换/数据处理组
- strconv.Atoi
字符串转int =(int)$str,Go强类型必用 - strconv.Itoa
int转字符串 =(string)$num - strconv.ParseBool
字符串转布尔,配置解析高频
HTTP中间件/请求专属
- http.Request.WithContext
衍生携带新上下文请求,中间件传值、超时控制核心 - http.ResponseWriter.Header().Set
响应头设置,Go原生HTTP标准写法
3个PHP思维转Go 硬核差异(老手最快吃透)
- PHP弱类型自动转值,Go全手动强转
数字、字符串、布尔必须strconv系列手动转换,无隐式转换 - PHP全局变量满天飞,Go优先Context传参
接口鉴权、用户信息、链路ID一律塞context.Context,拒绝全局污染 - PHP异常抛错终止程序,Go错误逐层返回
所有IO、网络、配置操作必接error,不捕获不崩溃
更多推荐


所有评论(0)