(转)[Journey with golang] 1. Basic knowledge
原文:https://www.cnblogs.com/JHSeng/p/12128461.html
这一章介绍golang的一些基础知识。golang写起来跟c++很不一样,在我看来,它更像是c++/java/python的混合体,再经过一系列增删之后的东西。
golang最大的特点就是简洁,仅有25个关键字;它虽然是一门静态语言,但支持运行时动态类型;它不仅是强类型语言,还支持隐式类型推导。golang不支持泛型,但支持反射。golang自带gc,并原生支持协程。
第一行定义了一个名为main的package,它是可执行程序的包名。所有go代码头部必须有一个包声明语句,go通过包来管理命名空间。
第三行import引用一个外部包fmt,这是标准IO包。可以通过import来引用标准库、第三方甚至是自定义的包。
其他行的含义都十分显然。
go源代码特点非常明显:以.go为后缀;默认UTF8编码;忽略分号;函数以func开头,且与{同行;main函数所在的包包名必须为main。
go的基本数据类型与c++相比稍有变化,值得注意的是字符不是char,而是rune。
bool不能与int相互转换。
不同类型的int必须进行强制类型转换。
浮点数字面量被自动推断为float64.
字符串与java的string一样,都是常量。但可以通过切片来操作。尾部不包含空字符。对字符串的切片操作返回的子串依然是string而不是slice。
go支持指针。结构体指针访问结构体字段时依然用.而不是->。golang没有->这一操作符。
golang为切片维护三个元素:指向底层数组的指针、切片元素数量和底层数组容量。可以通过数组和内置函数make来创建slice。
map可以通过字面量创建,也可以通过make函数创建。golang内置的map并不是并发安全的,可以通过使用标准包sync里的map来解决。map value的某个元素不能被单独修改,只能通过把value整体替换来解决。
struct中的类型可以为任意类型;struct的存储空间是连续的,其字段按照声明时的顺序存放,字段之间有对齐要求。
golang代码的顺序并不一定是编译后最终可执行程序的指令顺序。
golang只有for循环。
其他内容比较基础,不再赘述。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
2018-02-05 (转)IBM AIX系统硬件信息查看命令(shell脚本)