登录
首页 >  Golang >  Go问答

Google Go Lang 作业顺序

来源:Golang技术栈

时间:2023-04-23 16:06:51 477浏览 收藏

小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《Google Go Lang 作业顺序》,以下内容将会涉及到golang,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!

问题内容

让我们看看下面的 Go 代码:

package main

import "fmt"

type Vertex struct {
    Lat, Long float64
}

var m map[string]Vertex

func main() {
    m = make(map[string]Vertex)
    m["Bell Labs"] = Vertex{
        40.68433, 74.39967,
    }
    m["test"] = Vertex{
        12.0, 100,
    }
    fmt.Println(m["Bell Labs"])
    fmt.Println(m)
}

它输出这个:

{40.68433 74.39967}

map[Bell Labs:{40.68433 74.39967} test:{12 100}]

但是,如果我更改测试顶点声明的 小部分,通过向右移动“ }”4 个空格,如下所示:

m["test"] = Vertex{
    12.0, 100,
}

..然后输出变为:

{40.68433 74.39967}

map[test:{12 100} Bell Labs:{40.68433 74.39967}]

为什么这个小小的修改会影响我的地图顺序?

正确答案

映射“顺序”取决于使用的散列函数。散列函数是随机的,以防止使用散列冲突的拒绝服务攻击。有关详细信息,请参阅问题跟踪器:

http://code.google.com/p/go/issues/detail?id=2630

根据规范不保证地图顺序。尽管在当前的 go 实现中没有这样做,但未来的实现可能会在 GC 或其他更改映射顺序的操作期间进行一些压缩,而无需您的代码修改映射。假设规范中未定义的属性是不明智的。

映射是一种类型的 无序 元素组,称为元素类型,由另一种类型的一组唯一键索引,称为键类型。

终于介绍完啦!小伙伴们,这篇关于《Google Go Lang 作业顺序》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

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