网络请求/IP 组

  1. net.SplitHostPort
    Go惯例:拆分host:port,分离地址与端口
    host, port, err := net.SplitHostPort(r.RemoteAddr)
    
    PHP差异:$_SERVER['REMOTE_ADDR']直接剥离端口,Go原生不封装
  2. net.ParseIP
    校验字符串是否为合法IPv4/IPv6,返回net.IP类型
    net.ParseIP("127.0.0.1") != nil
    
  3. net.IP.IsPrivate
    判断是否内网IP,Go专属便捷方法
  4. http.CanonicalHeaderKey
    HTTP请求头标准化大写,Go中间件通用写法,统一x-real-ip/X-Real-IP

字符串处理组(替代PHP大量字符串函数)

  1. strings.Cut
    Go1.20+惯例,分割字符串,替代PHPexplode极简用法
    left, right, ok := strings.Cut(str, ",")
    
  2. strings.TrimSpace
    去除首尾空白,等同trim(),Go校验参数必用
  3. strings.Contains
    包含判断 = PHPstr_contains
  4. strings.HasPrefix/HasSuffix
    前缀后缀匹配,路由、路径判断高频
  5. strings.Split
    切片分割 = explode

错误与参数处理组(Go核心思想,无try-catch)

  1. fmt.Errorf + %w
    Go标准错误包装,链路错误溯源,行业统一惯例
    fmt.Errorf("加载失败: %w", err)
    
  2. errors.Is
    判断原始错误类型,替代PHP异常判断
  3. errors.As
    断言自定义错误结构体

路径/文件操作组

  1. filepath.Join
    跨平台拼接路径,替代手动拼接/,Windows/Linux通用
  2. filepath.Base
    获取文件名 = PHPbasename()
  3. os.ReadFile/os.WriteFile
    极简读写文件,Go1.16+主流用法,替代ioutil废弃方法

类型转换/数据处理组

  1. strconv.Atoi
    字符串转int = (int)$str,Go强类型必用
  2. strconv.Itoa
    int转字符串 = (string)$num
  3. strconv.ParseBool
    字符串转布尔,配置解析高频

HTTP中间件/请求专属

  1. http.Request.WithContext
    衍生携带新上下文请求,中间件传值、超时控制核心
  2. http.ResponseWriter.Header().Set
    响应头设置,Go原生HTTP标准写法

3个PHP思维转Go 硬核差异(老手最快吃透)

  1. PHP弱类型自动转值,Go全手动强转
    数字、字符串、布尔必须strconv系列手动转换,无隐式转换
  2. PHP全局变量满天飞,Go优先Context传参
    接口鉴权、用户信息、链路ID一律塞context.Context,拒绝全局污染
  3. PHP异常抛错终止程序,Go错误逐层返回
    所有IO、网络、配置操作必接error,不捕获不崩溃

更多推荐