分享
  1. 首页
  2. 文章

Golang的一些基础语法范式

Congroo_027c · · 1244 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:Congroo_027c

查看原文:Golang的一些基础语法范式

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
1244 次点击
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏