V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
BBCCBB
V2EX  ›  程序员

[Go] go 中切片 low 可以等于 len, 这样做有什么特别的意义吗?

  •  
  •   BBCCBB · Dec 19, 2022 · 1852 views
    This topic created in 1237 days ago, the information mentioned may be changed or developed.

    https://go.dev/play/p/6FTdrv2fX72

    具体可以见这里, 虽然规范里有些 low==len 是合法的, 但这样做有什么意义呢? https://stackoverflow.com/questions/30208182/why-does-go-allow-slicing-from-lenslice

    4 replies    2022-12-19 12:52:07 +08:00
    seakingii
        1
    seakingii  
       Dec 19, 2022
    你这个问题,就是"空切片"有没有意义
    空切片当然有意义,就是表示这个切片有指向底层数组,但切片是空的

    package main

    import "fmt"

    func main() {
    var s1 = "12"
    var s2 = "" //空字符串
    var slice1 = s1[1:] //["2"]
    var slice2 = s1[2:] //[] 空 slice

    fmt.Println(s1, s2, slice1, slice2)

    }

    比如 这个代码 空 slice 的意义就和字符串一样,你不能没有它.
    wangyu17455
        2
    wangyu17455  
       Dec 19, 2022 via Android
    有一个接口可能返回任意条数据,当没有符合条件的数据时,返回空切片还是 nil ?这不是显而易见的吗
    swulling
        3
    swulling  
       Dec 19, 2022
    不为什么,很多语言都是这样的,保持一致性而已。

    就好像数组下标从零开始,你要问为什么,也没有理由。
    BBCCBB
        4
    BBCCBB  
    OP
       Dec 19, 2022
    @wangyu17455 返回空 slice 完全可以 new 一个空的 slice 去返回.
    @seakingii 这个例子可以.
    @swulling 对,java 里的 subList fromIndex 也是可以等于 size
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3051 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 14:14 · PVG 22:14 · LAX 07:14 · JFK 10:14
    ♥ Do have faith in what you're doing.