gpt4 book ai didi

methods - 无效操作 : s[k] (index of type *S)

转载 作者:IT王子 更新时间:2023-10-29 01:24:18 25 4
gpt4 key购买 nike

我想定义这样一个类型:

type S map[string]interface{}

我想像这样向类型添加一个方法:

func (s *S) Get( k string) (interface {}){
return s[k]
}

程序运行时出现了这样的错误:

invalid operation: s[k] (index of type *S)

那么,我该如何定义类型并为类型添加方法呢?

最佳答案

例如,

package main

import "fmt"

type S map[string]interface{}

func (s *S) Get(k string) interface{} {
return (*s)[k]
}

func main() {
s := S{"t": int(42)}
fmt.Println(s)
t := s.Get("t")
fmt.Println(t)
}

输出:

map[t:42]
42

映射是引用类型,它包含一个指向底层映射的指针,因此您通常不需要为 使用指针。我添加了 (s S) Put 方法来强调这一点。例如,

package main

import "fmt"

type S map[string]interface{}

func (s S) Get(k string) interface{} {
return s[k]
}

func (s S) Put(k string, v interface{}) {
s[k] = v
}

func main() {
s := S{"t": int(42)}
fmt.Println(s)
t := s.Get("t")
fmt.Println(t)
s.Put("K", "V")
fmt.Println(s)
}

输出:

map[t:42]
42
map[t:42 K:V]

关于methods - 无效操作 : s[k] (index of type *S),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15939734/

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