首页 > 后端开发 > Golang > 正文

Fscanf 并像 C 中那样省略字段

WBOY
发布: 2024-02-12 16:18:05
转载
1111 人浏览过

Fscanf 并像 C 中那样省略字段

问题内容

是否可以像 C 中那样省略字段 %*s

var pid int
fmt.Fscanf(r, "%*s %d", &pid)
登录后复制

解决方法

实际上,在 Go 中你无法做到这一点(至少在 Go 1.21.0 上)。

源代码表明:

a 中的 Fscanf 数组(r io.Reader,格式字符串,a ...any))。因此,您必须a 中定义一个参数,即使您不关心它的值

如果您不想定义变量,可以使用:

var pid int
fmt.Fscanf(r, "%s %d", new(string), &pid)
登录后复制

其他替代方案io.ReadAll

对于您的具体情况,要解析阅读器中的某些内容,您可以首先将阅读器读入字符串(例如

):strings.Split CB835C294C06824721603abd255bd78a

然后使用
    方法或正则表达式,例如:
  1. strings.Split
  • pidString := strings.Split(string(s), " ")[1]
    pid, err := strconv.Atoi(pidString)
    if err != nil {
        panic(err) // handle the error
    }
    
    登录后复制
  • 使用正则表达式:

    re := regexp.MustCompile(`[^\s]+ (?P<pid>\d+)`) // similar to "%s %d"
    matches := re.FindStringSubmatch(s)
    pidString := matches[re.SubexpIndex("pid")]
    pid, err := strconv.Atoi(pidString)
    if err != nil {
        panic(err) // handle the error
    }
    
    登录后复制
    🎜可能还有其他方法,但这些应该足以说明。希望有帮助。🎜

    以上是Fscanf 并像 C 中那样省略字段的详细内容。更多信息请关注PHP中文网其他相关文章!

    来源:stackoverflow.com
    本站声明
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
    热门教程
    更多>
    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责声明 Sitemap
    PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!