为了账号安全,请及时绑定邮箱和手机立即绑定

Golang,以下内容是做什么的[]

Golang,以下内容是做什么的[]

Go
守着一只汪 2023-08-21 14:32:55
我是 golang 新手,有一个基本问题。我从网络上的示例中获取了以下代码func (d Direction) String() string {     return [...]string{"North", "East", "South", "West"}[d] }我很困惑[d]方法体中的作用是什么?
查看完整描述

3 回答

?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

[d]只是一个索引表达式,它对前面使用复合文字创建的数组进行索引。

这:

[...]string{"North", "East", "South", "West"}

string是一个数组复合文字,它使用列出的元素创建一个元素类型的数组,并随后[d]索引该数组。该方法返回这个 4 大小数组的d第一个元素。

请注意,这...意味着我们希望编译器自动确定数组大小:

该表示法...指定数组长度等于最大元素索引加一。

查看完整回答
反对 回复 2023-08-21
?
大话西游666

TA贡献1817条经验 获得超14个赞

这部分声明了一个包含四个字符串的数组文字:

[...]string{"North", "East", "South", "West"}

d然后这部分从数组中获取第th 个元素:

[...]string{"North", "East", "South", "West"}[d]

Direction必须要int让它发挥作用。


查看完整回答
反对 回复 2023-08-21
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

提到[d] 是一个索引表达式。


以下只是一个查看输出的工作示例


package main


import "fmt"


type Direction int


func (d Direction) String() string {

    return [...]string{"North", "East", "South", "West"}[d]

}


func main() {

    n:=Direction(0)  // d=0

    fmt.Println(n)

    w:=Direction(3)  // d=3

    fmt.Println(w)

}

输出:


North

West

更清楚地说,


return [...]string{"North", "East", "South", "West"}[d]


可以展开为


func (d Direction) String() string {

    var directions = [...]string{"North", "East", "South", "West"}

    return directions[d]

}


查看完整回答
反对 回复 2023-08-21
  • 3 回答
  • 0 关注
  • 74 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信