登录
首页 >  Golang >  Go问答

解决 Golang 编译错误:尝试删除地图中的项目

来源:stackoverflow

时间:2024-02-21 09:30:26 497浏览 收藏

今天golang学习网给大家带来了《解决 Golang 编译错误:尝试删除地图中的项目》,其中涉及到的知识点包括等等,无论你是小白还是老手,都适合看一看哦~有好的建议也欢迎大家在评论留言,若是看完有所收获,也希望大家能多多点赞支持呀!一起加油学习~

问题内容

我正在尝试从 golang 地图中删除项目。

这是代码的粗略想法:

import (
    "github.com/aws/aws-sdk-go/aws/session"
)

var sessions map[string]*session.session

type config struct {
    ...
    endpoint string
    ...
}

func newconfig() config {
    var config config = config{endpoint: "myendpoint"}
    return config
}

func createsession(config *config) error {
    ...
    sessions = make(map[string]*session.session)
    ...
    session, err := session.newsession( <session info here> )
    sessions[config.endpoint] = session
    ...
}

func main() {
    config := newconfig()
    err := createsession()
    ...
    if <some condition where i want to delete the session> {
        delete(sessions, config.endpoint)
    }
}

但是我遇到了这个编译错误:

# ./build_my_program.sh
./myprogram.go:9998:12: cannot use sessions (type map[string]*session.Session) as type *config in argument to delete
./myprogram.go:9999:29: cannot use Config.endPoint (type string) as type *session.Session in argument to delete

我不明白这里的问题。

这里唯一让我怀疑的是在映射中使用指针作为类型。假设我需要保留指针类型,知道如何解决吗?


正确答案


内置的 delete 函数被包中的 func delete(*config, *session.session) {} 遮蔽。重命名包中的函数。

您在哪里声明了 delete 函数?

package main

func delete(a, b string) {
}

func main() {
    m := map[int]int{}
    m[1] = 1
    delete(m, 1)
}
./del.go:9:8: cannot use m (type map[int]int) as type string in argument to delete
./del.go:9:12: cannot use 1 (type untyped int) as type string in argument to delete

到这里,我们也就讲完了《解决 Golang 编译错误:尝试删除地图中的项目》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>