Golang代码实现分享与讨论

Golang代码实现分享与讨论 这是我的Go代码

“如何在包级别作用域或全局作用域初始化切片”

2 回复
X =[]int{5,7,8}

更多关于Golang代码实现分享与讨论的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在Go中,包级别作用域的切片初始化可以通过以下几种方式实现:

1. 直接使用字面量初始化

package main

var globalSlice = []int{1, 2, 3, 4, 5}

2. 使用make函数初始化

package main

var globalSlice = make([]int, 0, 10) // 长度0,容量10

3. 使用init函数初始化

package main

var globalSlice []int

func init() {
    globalSlice = make([]int, 5)
    for i := range globalSlice {
        globalSlice[i] = i * 2
    }
}

4. 使用函数返回值初始化

package main

var globalSlice = createSlice()

func createSlice() []string {
    return []string{"a", "b", "c"}
}

完整示例

package main

import "fmt"

// 方法1:字面量初始化
var slice1 = []int{10, 20, 30}

// 方法2:make初始化
var slice2 = make([]string, 3)

// 方法3:init函数初始化
var slice3 []float64

func init() {
    slice3 = make([]float64, 4)
    slice3[0] = 1.1
    slice3[1] = 2.2
    slice3[2] = 3.3
    slice3[3] = 4.4
}

// 方法4:函数返回初始化
var slice4 = generateSlice()

func generateSlice() []bool {
    return []bool{true, false, true}
}

func main() {
    fmt.Println("slice1:", slice1)
    fmt.Println("slice2:", slice2)
    fmt.Println("slice3:", slice3)
    fmt.Println("slice4:", slice4)
}

注意事项

  • 包级别变量在程序启动时初始化
  • init函数在main函数执行前自动调用
  • 全局切片在并发访问时需要注意线程安全问题
回到顶部