当前位置: 首页 > 知识库问答 >
问题:

获取可为空字符串的长度

艾奕
2023-03-14

我有以下结构:

type NetAuth struct {
        Identificator *string `json:"identificator"`
        Password      *string `json:"password"`
        DeviceID      *string `json:"deviceId"`
        Type          int  `json:"type"`
}

我试图用len(event.Identificator)获得标识符的长度,但是我得到了len的无效参数

在给伦打电话之前,我先检查一下是不是零。我来自Java/C#/PHP背景,这是我第一次用GO写东西。

共有2个答案

孔琪
2023-03-14

您正在使用指针,请尝试以下操作:

println(len(*vlr.Identificator))

例如

package main

import (
    //"fmt"
    "encoding/json"
    "strings"
    "io"
)

type NetAuth struct {
        Identificator *string `json:"identificator"`
        Password      *string `json:"password"`
        DeviceID      *string `json:"deviceId"`
        Type          int  `json:"type"`
}

func jsondata() io.Reader {
  return strings.NewReader(`{"identificator": "0001", "password": "passkey"}`)
}

func main() {
    dec := json.NewDecoder(jsondata())
    vlr := new(NetAuth)
    dec.Decode(vlr)
    println(*vlr.Identificator)
    println(len(*vlr.Identificator))

}

游乐场:https://play.golang.org/p/duf0tEddBsR

输出:

0001
4
莫繁
2023-03-14

Go中没有简单的len(string)概念。您需要字符串表示中的字节数或字符数(所谓的符文)。对于ASCII字符串,两个值相同,而对于unicode编码的字符串,它们通常不同。

import "unicode/utf8"

// Firt check that the pointer to your string is not nil
if nil != event.Identificator {
    // For number of runes:
    utf8.RuneCountInString(*event.Identificator)

    // For number of bytes:
    len(*event.Identificator)
}

有关更多信息,您可以查看此答案https://stackoverflow.com/a/12668840/1201488.

UPD:事件。标识符是指向NetAuth结构中字符串值的指针,而不是字符串值。因此,您需要首先通过*事件取消引用它。标识符

 类似资料:
  • 问题内容: 你如何得到一个的长度?例如,我有一个定义如下的变量: 但是,我似乎无法在字符串上找到长度方法。 问题答案: 自Swift 4+起 只是: 原因。 (感谢Martin R) 从Swift 2开始: 在Swift 2中,Apple已将全局功能更改为协议扩展,这些扩展可与符合协议的任何类型匹配。因此,新语法为: (感谢JohnDifool的注意) 从Swift 1开始 使用计数字符方法: 直

  • 在 Java 中, 要获取字符串的长度,可以使用 String 类的 length() 方法,其语法形式如下: 例 1 在学生信息管理系统中对管理员密码有这样的规定,即密码长度必须大于 6 位且小于 12 位。因为密码太短容易被破解,太长的话又不容易记住。这就需要首先获取用户输入的密码字符串,然后调用 length() 方法获取长度,再做进一步的长度判断,最终实现代码如下所示: 上述代码将用户输入

  • 问题内容: 我想获取字段的字符串值(它们可以是长字符串或任何对象的类型), 如果一个字段为空,那么它应该返回空字符串,我用番石榴做过; 但是如果gearbox为null,则返回null!非空字符串,因为valueOf methdod返回字符串“ null”,这会导致错误。 有任何想法吗? EDIt:有100多个字段,我正在寻找易于实现的字段 问题答案: 您可以使用(Java 7中的标准): 从链接

  • 返回字符串的字节长度。 将给定的字符串转换为Blob Object并查找其 size 。 const byteSize = str => new Blob([str]).size; byteSize('

  • 本文向大家介绍PowerShell获取字符串长度的方法,包括了PowerShell获取字符串长度的方法的使用技巧和注意事项,需要的朋友参考一下 使用PowerShell可以很方便的计算字符串的长度。PowerShell是继承于Microsoft .NET Framework的,所以在.NET里面怎么获取到字符串的长度,在PowerShell中可以使用相同的方法。 我们知道在.NET中,可以使用St