(转)[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,并原生支持协程。

1 package main 2 3 import "fmt" 4 5 func main() { 6 fmt.Println("Hello, world!") 7 }

第一行定义了一个名为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循环。

其他内容比较基础,不再赘述。

posted @   liujiacai  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
历史上的今天:
2018-02-05 (转)IBM AIX系统硬件信息查看命令(shell脚本)
点击右上角即可分享
微信分享提示