Golang的一些基础语法范式

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

内容简介:主要记录一些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次时才会报错

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

查看所有标签

猜你喜欢:

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

计算机科学概论(第12版)

计算机科学概论(第12版)

[美] J.Glenn Brookshear、[美] Dennis Brylow / 刘艺、吴英、毛倩倩 / 人民邮电出版社 / 2017-1 / 69.00

《计算机科学概论》是计算机科学概论课程的经典教材,全书对计算机科学做了百科全书式的精彩阐述,充分展现了计算机科学的历史背景、发展历程和新的技术趋势。《计算机科学概论》首先介绍的是信息编码及计算机体系结构的基本原理,进而讲述操作系统和组网及因特网,接着探讨算法、程序设计语言及软件工程,然后讨论数据抽象和数据库方面的问题,讲述图形学的一些主要应用以及人工智能,以计算理论的介绍结束全书。《计算机科学概论......一起来看看 《计算机科学概论(第12版)》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

MD5 加密
MD5 加密

MD5 加密工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具