Go初体验|基础

Go初体验|基础,第1张

概述字符串 GO的字符串有点不一样。它是UTF8字符的一个序列:当字符为一个ASCII码时为一个字节,其他字符则根据需要占用2-4个字节。 该做法的好处是:节省了内存和硬盘的存储空间,同时,不需要像其它语言一样对UTF8字符集的文本进行编码和解码。 GO通过双引号"和反引号`来构建字符串。 双引号则会对文本进行解析,`则不会。 单个字符可以通过'来创建,一个单一字符可以用一个单一的rune类型来表示。 字符串

GO的字符串有点不一样。它是UTF8字符的一个序列:当字符为一个ASCII码时为一个字节,其他字符则根据需要占用2-4个字节。

该做法的好处是:节省了内存和硬盘的存储空间,同时,不需要像其它语言一样对UTF8字符集的文本进行编码和解码。

GO通过双引号"和反引号`来构建字符串。

双引号则会对文本进行解析,`则不会。

单个字符可以通过'来创建,一个单一字符可以用一个单一的rune类型来表示。

字符串支持切片 *** 作,但小心如果字符串包含非ASCII字符,切片则要小心。因为切片 *** 作是使用对字符串的字节进行索引的。这时可以使用range来代替切片 *** 作:对字符串的每一个字符进行 *** 作。

字符串处理相关的包:

fmt: 打印字符串的格式

strings: 字符串处理函数

strconv(将字符串和其它类型数据进行转换)

值,指针,引用

通常情况下,我们可以把一个GO变量当作他的值来使用。

其中有一些例外:通道、函数、方法、映射、切片都使用了引用,即保存指针的变量。

GO中的指针 *** 作符是: & 和 *

& 用于取地址
* 用于解引用,即获取指针指向的值

package mainimport (    "fmt")func swap1(x,y,p *int){    if *x > *y {        *x,*y = *y,*x    }    *p = *x * *y}func swap2(x,y int)(int,int,int){    if x > y {        x,y = y,x    }    return x,x*y}func main(){    i := 9    j := 5    product := 0    swap1(&i,&j,&product)    fmt.Println(i,j,product)    a := 63    b := 64    a,b,p := swap2(a,b)    fmt.Println(a,p)}
数组

GO的数组是一个定长的序列,元素类型相同。通过[]来构建索引。

构建语法

[length]Type[N]Type{v1,v2,vN}[]Type{}

数组的长度是固定,不可修改的。可以通过len()来获得数组的长度,cap()获得数组的切片大小(不确定)。

数组也有切片 *** 作,也可以通过range进行索引访问。

切片

GO的数组是值传递,而切片是引用传递,因此效率更高。

创建切片

make([]Type,length,capacity)make([]Type,length)[]Type{}[]Type{v1,vN}

内置函数make来创建切片,映射和通道。

当创建一个切片时,首先会创建一个隐藏的初始化为零值的数组,然后返回一个引用该隐藏数组的切片。一个切片的容量(capacity)为隐藏数组的长度。可以通过append来增加切片的容量。

未完待续

映射

参考

https://www.shiyanlou.com/courses/runnin...

总结

以上是内存溢出为你收集整理的Go初体验|基础全部内容,希望文章能够帮你解决Go初体验|基础所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1285071.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存