SherlockGy's Blog

  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

Go语言学习之旅08——切片Slice

发表于 2018-12-24 | 更新于 2019-03-02 | 分类于 程序人生 > Golang
本文字数: 3.3k | 阅读时长 ≈ 3 分钟

Go语言切片

切片可以传入三个参数,分别是[low, high, max],取元素就是从low开始,取high - low个数(等同于Java和Python),max - low的数作为新的切片的容量cap,可以不传max,当max不传时,容量默认和长度len相同。

即:新切片的len = high - low,cap = max - low

示例:

1
2
3
4
5
6
7
func main() {
arr := [...]int{0, 1, 2, 3, 4, 5, 6, 7}
fmt.Println(arr[2:6]) // [2 3 4 5]
fmt.Println(arr[2:]) // [2 3 4 5 6 7]
fmt.Println(arr[:6]) // [0 1 2 3 4 5]
fmt.Println(arr[:]) // [0 1 2 3 4 5 6 7]
}

注意:切片包头不包尾

视图

由数组执行切片所返回的对象是一个view,即视图,若我们在视图上操作数组,会改变原数组

1
2
3
4
5
6
7
8
9
10
func updateSlice(arr []int) { // 接收一个切片的view作为参数,而不是不限制长度的数组
arr[0] = 99
}

func main() {
arr1 := [...]int{0, 1, 2, 3, 4, 5, 6, 7}
fmt.Println("前arr1 = ", arr1) // 前arr1 = [0 1 2 3 4 5 6 7]
updateSlice(arr1[:])
fmt.Println("后arr1 = ", arr1) // 后arr1 = [99 1 2 3 4 5 6 7]
}

补充:可以在view的基础上继续执行切片(slice),称为Reslice

阅读全文 »

Go语言学习之旅07——数组

发表于 2018-12-24 | 更新于 2019-02-04 | 分类于 程序人生 > Golang
本文字数: 1.4k | 阅读时长 ≈ 1 分钟

定义数组

1
2
3
4
5
6
7
func main() {
var arr1 [5]int // 声明数组,不赋值
arr2 := [5]int{1, 2, 3, 4, 5} // 声明数组并赋值,指定数组长度,完整赋值
arr3 := [5]int{1, 2, 3} // 不完整赋值,未赋值的为0
arr4 := [5]int{2: 1, 3: 2} // 指定下标赋值,为下标2赋值1,下标3赋值2,其余为0
arr5 := [...]int{1, 2, 3, 4, 5} // 声明数组,长度由编译器自动识别
}

数组的比较,比较其每一个元素是否都相同:

1
2
3
4
5
func main() {
arr1 := [5]int{1, 2, 3, 4, 5}
arr2 := [5]int{1, 2, 3, 4, 5}
fmt.Println(arr1 == arr2) // 返回true
}

定义二维数组

1
2
3
4
func main() {
var arr4 [4][5]int // 定义4个长度为5的数组
fmt.Println(arr4)
}
阅读全文 »

Linux&Mac系统环境变量配置

发表于 2018-12-23 | 分类于 技巧分享 > Mac
本文字数: 1.2k | 阅读时长 ≈ 1 分钟

mac 一般使用bash作为默认shell

Mac系统的环境变量,加载顺序为:

  • /etc/profile
  • /etc/paths
  • ~/.bash_profile
  • ~/.bash_login
  • ~/.profile
  • ~/.bashrc

当然/etc/profile和/etc/paths是系统级别的,系统启动就会加载,后面几个是当前用户级的环境变量。

后面3个按照从前往后的顺序读取,如果~/.bash_profile文件存在,则后面的几个文件就会被忽略不读了,如果~/.bash_profile文件不存在,才会以此类推读取后面的文件。~/.bashrc没有上述规则,它是bash shell打开的时候载入的。

如果没特殊说明,设置PATH的语法都为:

1
2
#中间用冒号隔开
export PATH=$PATH:<PATH 1>:<PATH 2>:<PATH 3>:------:<PATH N>
阅读全文 »

Go语言学习之旅06——指针初见

发表于 2018-12-23 | 更新于 2019-02-01 | 分类于 程序人生 > Golang
本文字数: 283 | 阅读时长 ≈ 1 分钟

go语言的指针没有C语言那么复杂,这里稍加举例

详细一点的介绍请看学习之旅第18篇

阅读全文 »

Go语言学习之旅05——函数

发表于 2018-12-23 | 分类于 程序人生 > Golang
本文字数: 856 | 阅读时长 ≈ 1 分钟

关于函数之前已经举过一些例子,这里再做详细的介绍

函数的声明

go语言的函数由:关键字func + 函数名称 + 参数列表 + 返回值列表 + 函数体组成,若是匿名函数,则可以省略函数名称

多返回值

go语言允许一个函数返回多个值,如果调用者只需要其中的部分返回值,不需要的返回值可以使用下划线_符号接收,这样编辑器就不会认为存在没有使用的变量了。

注意:go语言变量一经声明,必须使用,否则编译不通过,通过上述方法可以接收不需要使用的返回值

go语言的返回值可以命名,方式类似参数列表,这样做的好处是有:

  • 假设我们将返回值命名为score,那么我们如果在函数体内只需要给score赋完值,返回时只需要写return即可,而不是return score

  • 调用该函数的时候,可以通过返回值名称(由IDE工具生成或显示)来判断每一个返回值得含义

阅读全文 »
1…101112…23
SherlockGy

SherlockGy

Keep thinking different...

111 日志
38 分类
62 标签
RSS
GitHub E-Mail
友情链接
  • GoLang-飞雪无情的博客
  • Java-酷壳
  • Python-静觅丨崔庆才的个人博客
  • 掘金
  • GoLang中国
  • GoLang中文社区
  • V2EX
  • Microsoft Docs
  • Go语言圣经
© 2020 SherlockGy | 191k | 2:false
由 Hexo 强力驱动 v3.7.1
|
主题 — NexT.Pisces v6.3.0