You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go语言中如何对字符串指针执行空格修剪与HTML转义操作

错误原因

报错是类型不匹配导致的:

  • strings.TrimSpace 和 html.EscapeString 两个函数的入参要求为 string 类型,但你直接传入了 *string 类型的 u.Username
  • 两个函数执行后返回的是 string 类型,不能直接赋值给 *string 类型的 Username 字段

解决方法

在u.Username非空的判断分支里,先对指针解引用拿到原始字符串值,处理完成后再取处理后字符串的地址赋值回去即可。
修正后的代码如下:

import (
    "html"
    "strings"
)

type User struct {
    Username *string `json:"username"`
    Email    string  `json:"email"`
    Password string  `json:"password"`
}

func (u *User) PrepareUser() {
    if u.Username != nil {
        // 先解引用拿到原始字符串,处理后取地址赋值回去
        processed := html.EscapeString(strings.TrimSpace(*u.Username))
        u.Username = &processed
        // 可选逻辑:如果处理后是空字符串需要设为nil,可开启下面的判断
        // if processed == "" {
        //     u.Username = nil
        // }
    }
    u.Email = html.EscapeString(strings.TrimSpace(u.Email))
    u.Password = strings.TrimSpace(u.Password)
}

可选扩展(Go 1.18+支持)

如果项目使用Go 1.18及以上版本,也可以封装通用的取指针工具函数简化写法:

// 通用取指针工具函数
func ptr[T any](v T) *T {
    return &v
}

// 分支内逻辑可以简化为一行
u.Username = ptr(html.EscapeString(strings.TrimSpace(*u.Username)))

内容的提问来源于stack exchange,提问作者Sanzhar Alimkhanov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 21:15:00