[Journey with golang] 1. Basic knowledge

这一章介绍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循环。

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

原文地址:https://www.cnblogs.com/JHSeng/p/12128461.html

时间: 2024-10-07 05:54:37

[Journey with golang] 1. Basic knowledge的相关文章

The basic knowledge of block

Block(1):基础知识 代码块对象,通常称为代码块,是对C语言中函数的扩展.它有一个更被大家熟知的名字:闭包(closure). 1.使用代码块 首先看一个下面方法的调用过程,该方法接受代码块作为参数: [aDictionary enumerateKeysAndObjectsUsingBlock:^(id key, id value, BOOL *stop) {     NSLog(@"value for key %@ is %@", key, value);     if ([@

C++之Basic knowledge

目录 Ascii Codes Boolean Operations AND OR XOR (Exclusive Or) NOT Numerical Bases Octal numbers (base 8) Hexadecimal numbers (base 16) Binary representations Reference websites Ascii Codes It is a very well-known fact that computers can manage internal

[Journey with golang] 0. Planning for the New year and new journey

最近由于一些事务,开始写golang.由于golang本身的简洁性和易用性(当然,它还是一门强类型语言),让我感觉这门语言不仅有趣,而且具有很高的实用性. 为了进一步系统学习这门语言,元旦期间我将每天更新博客,权当golang知识点复习(反正在家也是无聊). 关于golang的书籍,个人推荐李文塔的<Go语言核心编程>和最权威的<The Go Programming Language>. 时间仓促,水平所限,难免有错.欢迎大家批评指正. 原文地址:https://www.cnblo

[Journey with golang] 3. Type system

golang的类型分为命名类型和未命名类型.命名类型包含预声明类型,可以通过标识符表示,用户自定义类型也是命名类型.未命名类型由预声明类型.关键字和操作符组合而成.未命名类型又称为类型字面量.array/slice/map/channel/pointer/function/struct/interface都属于类型字面量.其中,struct和interface是不使用type定义的那种. 未命名类型和类型字面量是等价的,通常所述的golang基本类型中的复合类型就是类型字面量,所以未命名类型.类

[Journey with golang] 7. Traps

golang语法简单,类型系统短小精悍,但也不是完美无瑕的.golang也有一些特性让初学者感到困惑.本文介绍golang的语言陷阱,并介绍golang源码书写的惯用方法. golang支持多值赋值,在函数或方法内部也支持短变量声明并复制,同时golang依据类型字面量的值能够自动进行类型推断.可以一次性声明多个变量,并可以在声明时赋值,而且可以省略类型,但必须遵守一定的规则要求.具体看下面的示例: 1 package main 2 3 import "fmt" 4 5 func ma

[Journey with golang] 8. Project Management

本文介绍一些关于golang工程管理相关的东西.首先介绍golang一些重要的环境变量,有关golang的环境变量可以用以下命令查看: go env $GOROOT:golang安装根目录.Linux下默认是/usr/lib/go.如果$GOROOT位于上述位置,则不需要显式设置该环境变量,反之需要设置. $GOPATH:golang工作目录(workspace).默认值为$HOME/go. $GOBIN:是带有main函数的源程序执行 go install 时生成的可执行程序安装目录,默认是$

basic knowledge

Position 属性:规定元素的定位类型.即元素脱离文档流的布局,在页面的任意位置显示. ①absolute :绝对定位:脱离文档流的布局,遗留下来的空间由后面的元素填充.定位的起始位置为最近的父元素(postion不为static),否则为Body文档本身. ②relative :相对定位:不脱离文档流的布局,只改变自身的位置,在文档流原先的位置遗留空白区域.定位的起始位置为此元素原先在文档流的位置. ③fixed :固定定位:类似于absolute,但不随着滚动条的移动而改变位置. ④st

NoSql basic knowledge

The big picture to keep in mind first is: There are lots of articles and resources out there: http://blog.sina.com.cn/s/blog_3fe961ae010139u6.html http://old.sebug.net/paper/databases/nosql/Nosql.html http://blog.csdn.net/godfrey90/article/details/67

Basic knowledge of html (keep for myself)

1. 通常标签 <strong> 替换加粗标签 <b> 来使用, <em> 替换 <i>标签使用. 2. 在 <head>元素中你可以插入脚本(scripts), 样式文件(CSS),及各种meta信息.     可以添加在头部区域的元素标签为: <title>, <style>, <meta>, <link>, <script>, <noscript>, and <b