**已关闭。**此问题不符合Stack Overflow guidelines。它目前不接受回答。
这个问题似乎与help center中定义的范围内的编程无关。
上个月关门了。
Improve this question的
我要用Sprintf
创建这个字符串
message := fmt.Sprintf("Unit %s has a Level of %v, but is of Category %v",
*entity.Name, *entity.LevelCode, *entity.CategoryCode)
字符串
在实体中,变量是指针,可以是nil
:
Name
是一个*string
LevelCode
有一个*LevelCode
类型CategoryCode
有一个*CategoryCode
类型
但是如果它们有一个值,我需要这个值而不是指针。(即 * 单位ABC的级别为零,但属于行政单位类别 *)
用任何一种语言,我都会这样写:
message := fmt.Sprintf("Unit %s has a Level of %v, but is of %v Category",
entity.Name != nil ? *entity.Name : "nil", entity.LevelCode != nil ? *entity.LevelCode : "nil", entity.CategoryCode != nil ? *entity.CategoryCode : "nil")
型
但Go语言不允许使用三元运算符。如果我不处理nil值,Sprintf
会抛出一个异常。
所以,我一定要这样开始吗?
if entity.Name == nil && entity.LevelCode != nil && entity.CategoryCode != nil) {
message := "Unit nil has a Level of nil, but is of nil Category"
}
else {
if entity.Name != nil && entity.LevelCode != nil && entity.CategoryCode != nil) {
message := fmt.Sprintf("Unit %s has a Level of nil, but is of nil Category",
entity.Name != nil ? *entity.Name : "nil")
}
else {
...
for 9 combinations of values nil or not nil values, and 9 sprintf formats?
}
}
What the shortest way to dump my variables content in a formatted line?
型
1条答案
按热度按时间hwamh0ep1#
谢谢,在你的帮助下,我成功地建立了功能。
字符串
往那边打电话
型
要为单个
Sprintf
编写的五个语句...但它有效。