Golang的一些基础语法范式

栏目: Go · 发布时间: 7年前

内容简介:主要记录一些Golang里面的基本语法范式,因为Golang这玩意实在语法和一般编程语言太特么不一样了...切片是Golang中关于数组的一个概念,它很类似于SQL语言中的视图概念,即它类似一个实体数据的镜像或快照,同时一般情况下在Golang实际项目中我们也更多的会去使用切片而不是数组本体Golang的map基本可以说就是哈希表了

主要记录一些Golang里面的基本语法范式,因为Golang这玩意实在语法和一般编程语言太特么不一样了...

数组和切片的初始化

切片是Golang中关于数组的一个概念,它很类似于 SQL 语言中的视图概念,即它类似一个实体数据的镜像或快照,同时一般情况下在Golang实际项目中我们也更多的会去使用切片而不是数组本体

// 数组的初始化
var array = [5]int                  // 仅声明
array := [5]int                     // 另外一种写法,也是一般函数体中用的更多的写法
array := [5]int{1, 2, 3, 4, 5}      // 定长数组声明且赋值
array := [...]int{1, 2, 3, 4, 5}    // 不定长数组声明且赋值

// 切片的初始化
slice := []int{}                    // 只声明,不赋值,不规定length,不规定cap
slice := make([]int, 5)             // 只声明,不赋值,只规定length,不规定cap
slice := make([]int, 5, 10)         // 只声明,不赋值,规定length,也规定cap
slice := []int{1, 2, 3, 4, 5}       // 声明且赋值

// 切片&数组添加元素
var s []int

// 添加一个空切片
s = append(s, 0)

// 这个切片会按需增长
s = append(s, 1)

// 可以一次性添加多个元素
params := []int{2, 3, 4}
s = append(s, params...)   // 这里类似于 Python 中的*符号可变参数传入

// 二维数组&切片的初始化方式
// 二维数组的初始化
array := [2][3]int{{1, 2, 3}, {4, 5, 6}}
for i := range array {
    for j := range array[i] {
        fmt.Printf("%v ", array[i][j])
    }
    fmt.Println()
}

// 二维切片的初始化
array := make([][]int, 5)

// 创建二维Slice,Gotour上的范例
func Create2DArray(dx, dy int) [][]uint8 {
    result := make([][]uint8, dx)
    for i := range result {
        result[i] = make([]uint8, dy)
        for j := range result[i] {
            result[i][j] = uint8((i + j) / 2)
        }
    }
    return result[:]
}

Golang的map

Golang的map基本可以说就是哈希表了

func main() {
        // 初始化map
    m := make(map[string]int)

        // 新增键值对
    m["Answer"] = 42
    fmt.Println("The value:", m["Answer"])
        
        // 修改键值对
    m["Answer"] = 48
    fmt.Println("The value:", m["Answer"])

        // 删除键值对
    delete(m, "Answer")
    fmt.Println("The value:", m["Answer"])

        // 判断键是否存在
    v, ok := m["Answer"]
    fmt.Println("The value:", v, "Present?", ok)
}

Golang中的系统最大值&最小值表示

maxNum := math.MaxInt32  // 系统32位整型最大值
minNum := math.MinInt32  // 系统32位整型最小值

Golang中的Channel(通道)初始化

channel := chan int                  // 单整型通道赋值,一旦传值没有goroutine接收立即报错
bufferedChannel := make(chan int, 3) // 长度为3的整型通道初始化,只有在传入次数超过3次时才会报错

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

Where Wizards Stay Up Late

Where Wizards Stay Up Late

Katie Hafner / Simon & Schuster / 1998-1-21 / USD 16.00

Twenty five years ago, it didn't exist. Today, twenty million people worldwide are surfing the Net. "Where Wizards Stay Up Late" is the exciting story of the pioneers responsible for creating the most......一起来看看 《Where Wizards Stay Up Late》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

MD5 加密
MD5 加密

MD5 加密工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具