zoukankan      html  css  js  c++  java
  • [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循环。

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

  • 相关阅读:
    hdu 2485 Destroying the bus stations 迭代加深搜索
    hdu 2487 Ugly Windows 模拟
    hdu 2492 Ping pong 线段树
    hdu 1059 Dividing 多重背包
    hdu 3315 My Brute 费用流,费用最小且代价最小
    第四天 下载网络图片显示
    第三天 单元测试和数据库操作
    第二天 布局文件
    第一天 安卓简介
    Android 获取存储空间
  • 原文地址:https://www.cnblogs.com/JHSeng/p/12128461.html
Copyright © 2011-2022 走看看