go语言快速入门:内建函数(6)
发布日期:2021-06-30 20:24:09 浏览次数:2 分类:技术文章

本文共 3938 字,大约阅读时间需要 13 分钟。

go语言中有一些比较常用的内建函数,在这篇文章中将会进行简单的介绍。

内建函数

函数名 说明 备注
close 关闭channel 仅用于channel通讯
delete 从map中删除实例 map操作
len 返回字符串,slice和数组的长度 可用于不同的类型
cap 返回容量 可用于不同的类型
new 内存分配 用于各种类型
make 内存分配 仅用于chan/slice/map
copy 复制slice slice操作
append 追加slice slice操作
panic 报告运行时问题 异常处理机制
recover 处理运行时问题 异常处理机制
print 内建打印函数 主要用于不引入fmt的时候的调试,实际使用时建议使用标准库fmt
println 内建打印函数 主要用于不引入fmt的时候的调试,实际使用时建议使用标准库fmt
complex 构造复数类型 复数操作
real 抽出复数的实部 复数操作
imag 抽出复数的虚部 复数操作

len & cap

对象 len返回值 cap返回值
数组 数组元素个数 数组元素个数
指向数组的指针 数组元素个数 数组元素个数
slice 元素个数 slice的最大size >=len(slice)

map操作:delete

例子代码

[root@liumiaocn goprj]# cat basic-buildin1.gopackage mainimport "fmt"func main() {        m1 := make(map[string]int)        m1["Mon"] = 1        m1["Tue"] = 2        m1["Wed"] = 3        fmt.Println("before delete : m1=", m1, "len(m1)=", len(m1))        println("delete element by using key Tue")        delete(m1, "Tue")        fmt.Println("after  delete : m1=", m1, "len(m1)=", len(m1))}[root@liumiaocn goprj]#

执行结果

[root@liumiaocn goprj]# go run basic-buildin1.gobefore delete : m1= map[Mon:1 Tue:2 Wed:3] len(m1)= 3delete element by using key Tueafter  delete : m1= map[Mon:1 Wed:3] len(m1)= 2[root@liumiaocn goprj]#

slice操作

例子代码

[root@liumiaocn goprj]# cat basic-buildin2.gopackage mainimport "fmt"func main() {        a1 := new([10]int)        a1[4] = 5        a1[7] = 8        fmt.Println("a1= ", a1, "len(a1)=", len(a1), " cap(a1)=", cap(a1))        s1 := make([]int, 5, 10)        s1[0] = 5        s1[4] = 2        s2 := make([]int, 5, 10)        s2[0] = 1        s2[4] = 3        fmt.Println("before copy :s1= ", s1, "len(s1)=", len(s1), " cap(s1)=", cap(s1))        fmt.Println("before copy :s2= ", s2, "len(s2)=", len(s2), " cap(s2)=", cap(s2))        println("copy(s2,s1)")        copy(s2, s1)        fmt.Println("after  copy :s1= ", s1, "len(s1)=", len(s1), " cap(s1)=", cap(s1))        fmt.Println("after  copy :s2= ", s2, "len(s2)=", len(s2), " cap(s2)=", cap(s2))        println("reset")        s2[0] = 1        s2[4] = 3        fmt.Println("after  reset:s1= ", s1, "len(s1)=", len(s1), " cap(s1)=", cap(s1))        fmt.Println("after  reset :s2= ", s2, "len(s2)=", len(s2), " cap(s2)=", cap(s2))        println("append(s2,20)")        s2 = append(s2, 6)        fmt.Println("after  append:s1= ", s1, "len(s1)=", len(s1), " cap(s1)=", cap(s1))        fmt.Println("after  append:s2= ", s2, "len(s2)=", len(s2), " cap(s2)=", cap(s2))        s2 = append(s2, 7)        s2 = append(s2, 8)        s2 = append(s2, 9)        s2 = append(s2, 10)        fmt.Println("after  append:s2= ", s2, "len(s2)=", len(s2), " cap(s2)=", cap(s2))        s2 = append(s2, 11)        fmt.Println("after  append:s2= ", s2, "len(s2)=", len(s2), " cap(s2)=", cap(s2))}[root@liumiaocn goprj]#

执行结果

[root@liumiaocn goprj]# go run basic-buildin2.goa1=  &[0 0 0 0 5 0 0 8 0 0] len(a1)= 10  cap(a1)= 10before copy :s1=  [5 0 0 0 2] len(s1)= 5  cap(s1)= 10before copy :s2=  [1 0 0 0 3] len(s2)= 5  cap(s2)= 10copy(s2,s1)after  copy :s1=  [5 0 0 0 2] len(s1)= 5  cap(s1)= 10after  copy :s2=  [5 0 0 0 2] len(s2)= 5  cap(s2)= 10resetafter  reset:s1=  [5 0 0 0 2] len(s1)= 5  cap(s1)= 10after  reset :s2=  [1 0 0 0 3] len(s2)= 5  cap(s2)= 10append(s2,20)after  append:s1=  [5 0 0 0 2] len(s1)= 5  cap(s1)= 10after  append:s2=  [1 0 0 0 3 6] len(s2)= 6  cap(s2)= 10after  append:s2=  [1 0 0 0 3 6 7 8 9 10] len(s2)= 10  cap(s2)= 10after  append:s2=  [1 0 0 0 3 6 7 8 9 10 11] len(s2)= 11  cap(s2)= 20[root@liumiaocn goprj]#

复数操作

例子代码

[root@liumiaocn goprj]# cat basic-buildin3.gopackage mainimport "fmt"func main() {        var c1 = complex(1.1, 2)        var r1 = real(c1)        var i1 = imag(c1)        println("c1=", c1, " r1=", r1, " i1=", i1)        fmt.Println("c1=", c1, " r1=", r1, " i1=", i1)}[root@liumiaocn goprj]#

执行结果

[root@liumiaocn goprj]# go run basic-buildin3.goc1= (+1.100000e+000+2.000000e+000i)  r1= +1.100000e+000  i1= +2.000000e+000c1= (1.1+2i)  r1= 1.1  i1= 2[root@liumiaocn goprj]#

转载地址:https://liumiaocn.blog.csdn.net/article/details/54804074 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:go语言快速入门:流程控制(7)
下一篇:go语言快速入门:数据类型使用例(5)

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月18日 05时58分28秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

数据挖掘与数据分析(三)—— 探索性数据分析EDA(多因子与复合分析) & 可视化(1)—— 假设检验(μ&卡方检验&方差检验(F检验))&相关系数(皮尔逊&斯皮尔曼) 2019-04-30
RRT算法(快速拓展随机树)的Python实现 2019-04-30
路径规划(二) —— 轨迹优化(样条法) & 局部规划(人工势能场法) & 智能路径规划(生物启发(蚁群&RVO) & 强化学习) 2019-04-30
D*算法 2019-04-30
强化学习(四) —— Actor-Critic演员评论家 & code 2019-04-30
RESTful API 2019-04-30
优化算法(四)——粒子群优化算法(PSO) 2019-04-30
数据挖掘与数据分析(三)—— 探索性数据分析EDA(多因子与复合分析) & 可视化(2)——回归分析(最小二乘法&决定系数&残差不相关)&主成分分析&奇异值分解 2019-04-30
数据在Oracle中的存储 2019-04-30
优化算法(五)—人工蜂群算法Artificial Bee Colony Algorithm(ABC) 2019-04-30
轨迹规划 trajectory planning 2019-04-30
AGV自动导引运输车 2019-04-30
Trie树(字典树) 2019-04-30
COMP7404 Machine Learing——Logistic Regression 2019-04-30
COMP7404 Machine Learing——Regularization(参数C) 2019-04-30
COMP7404 Machine Learing——KNN 2019-04-30
COMP7404 Machine Learing——SVM 2019-04-30
COMP7404 Machine Learing——Decision Tree & Random Forests 2019-04-30
COMP7404 Machine Learing——Hyperparameter Grid Search & Nested Cross-Validation 2019-04-30
COMP7404 Machine Learing——Confusion Matrix & Precision/Recall/F1 2019-04-30