首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Go中创建任意切片类型的stringer方法

在Go中创建任意切片类型的stringer方法
EN

Stack Overflow用户
提问于 2018-06-04 01:23:16
回答 1查看 564关注 0票数 1

刚接触Golang。所以我在Go教程中读到了stringer,我想知道有没有办法为任何类型的切片定义一个通用的自定义Stringer()?例如:

代码语言:javascript
复制
package main

import "fmt"

type IntSlice []int

func (a IntSlice) String() string {
    return fmt.Sprintf("len %d\tcap %d", len(a), cap(a))
}

func main() {
    a:=[40]int{}
    sa:=IntSlice(a[:])
    fmt.Println(unsafe.Sizeof(a), "\t", unsafe.Sizeof(sa), " ", cap(sa))

    fmt.Println(sa)
}

就像这样,但没有类型IntSlice定义。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-06-04 01:30:03

代码语言:javascript
复制
type SliceStringer struct {
    Slice interface{}
}

func (ss SliceStringer) String() string {
    rv := reflect.ValueOf(ss.Slice)
    return fmt.Sprintf("len %d\tcap %d", rv.Len(), rv.Cap())
}

https://play.golang.org/p/jWnm9vCDFhq

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50669063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档