高效打印我的格式的方法

huangapple go评论83阅读模式
英文:

efficient way to print out my format

问题

我希望有一种高效的方法来打印出我的格式。
据我所知,转换为字符串可能会导致性能问题。
有没有更好的方法?

package main

import "fmt"

type T struct {
  order_no [5]byte
  qty int32
}
func (t T)String() string {
  return fmt.Sprint("order_no=", t.order_no, 
    "qty=", t.qty)
}

func main() {
        v := T{[5]byte{'A','0','0','0','1'}, 100}

	fmt.Println(v)
}    

输出结果是 order_no=[65 48 48 48 49]qty=100
我希望它是 order_no=A0001 qty=100

顺便问一下,为什么 func (t T)String() string 能工作,而 func (t *T)String() string 不能工作(在 goplay 上)。

英文:

I wish there is an efficient way to print out my format.
As I know convert to string may occur performance issue.
Is there any better method?

package main

import "fmt"

type T struct {
  order_no [5]byte
  qty int32
}
func (t T)String() string {
  return fmt.Sprint("order_no=", t.order_no, 
    "qty=", t.qty)
}

func main() {
        v := T{[5]byte{'A','0','0','0','1'}, 100}

	fmt.Println(v)
}    

The output is order_no=[65 48 48 48 49]qty=100
I wish it will be order_no=A0001 qty=100.

BTW, why func (t T)String() string work and func (t *T)String() string can not work.(on goplay)

答案1

得分: 1

package main

import "fmt"

type T struct {
order_no [5]byte
qty int32
}

func (t T) String() string {
return fmt.Sprint(
"order_no=", string(t.order_no[:]),
" qty=", t.qty,
)
}

func main() {
v := T{[5]byte{'A', '0', '0', '0', '1'}, 100}
fmt.Println(v)
}

英文:
package main

import "fmt"

type T struct {
	order_no [5]byte
	qty      int32
}

func (t T) String() string {
	return fmt.Sprint(
		"order_no=", string(t.order_no[:]),
		" qty=", t.qty,
	)
}

func main() {
	v := T{[5]byte{'A', '0', '0', '0', '1'}, 100}
	fmt.Println(v)
}

Output:

order_no=A0001 qty=100

huangapple
  • 本文由 发表于 2011年11月8日 09:33:20
  • 转载请务必保留本文链接:https://go.coder-hub.com/8044968.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定