gpt4 book ai didi

go - 来自博客 golang arrays slices and strings

转载 作者:数据小太阳 更新时间:2023-10-29 03:14:44 25 4
gpt4 key购买 nike

type path []byte

func (p path) ToUpper() {
for i, b := range p {
if 'a' <= b && b <= 'z' {
p[i] = b + 'A' - 'a'
}
}
}

func main() {
pathName := path("/usr/bin/tso")
pathName.ToUpper()
fmt.Printf("%s\n", pathName)
}

[练习:将 ToUpper 方法转换为使用指针接收器并查看其行为是否发生变化。]
如何使用指针方法?我试图取消引用 *p 并试图从范围中删除 i 但它一直说不匹配的类型。

最佳答案

因为 path 是在 []byte 上定义的类型,它恰好是一个 slice ,所以不需要使用指针接收器,因为 slice 类型已经被引用类型。

但是,如果需要指针接收器,则需要在方法中的所有位置取消引用指针值以获取底层 slice 值:

func (p *path) ToUpper() {
for i, b := range *p { // dereference p with a * to get the
// underlying []byte slice
if 'a' <= b && b <= 'z' {
(*p)[i] = b + 'A' - 'a' // derefernce p here as well
}
}
}

工作代码:https://play.golang.org/p/feqeAlb80z

关于go - 来自博客 golang arrays slices and strings,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39700671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com