03 Go语言特性

一、基本注意事项

  1.转义字符

1 \t    一个制表符,代表一次tab
2 \n    换行符
3 \\    转义代表 4 \"    转义代表 "
5 \r    一个回车,从当前行的最前面开始输出,会覆盖以前的内容,常配合\r\n换行使用

  2.注释

1 //        行注释
2 //本行已被注释
3 /* */块注释
4 /* 本段落被注释
5 本段落被注释*/
6 对于行注释和快注释,被注释的内容不会被Go编译器执行
7 注意: 块注释中不得嵌套块注释

  3.官方标准API文档

https://golang.org/pkg
1) API (Application Programming Interface,应用程序编程接口)是 Golang 提供的基本编程接口。
2) Go 语言提供了大量的标准库,因此 google 公司 也为这些标准库提供了相应的 API 文档,用于告 诉开发者如何使用这些标准库,以及标准库包含的方法。
3) Golang 中文网 在线标准库文档: https://studygolang.com/pkgdoc

  4.命名规范

1 编码:源码文件必须是 UTF-8 格式,否则会导致编译器出错。
2 命名:采用 camelCasing 风格(驼峰命名法),不建议使用下划线。

二、Go变量类型

  内置类型

  值类型:

1 bool                                                           布尔类型
2 int(32 or 64), int8, int16, int32, int64                       整数类型
3 uint(32 or 64), uint8(byte), uint16, uint32, uint64            无符号整型
4 float32, float64                                               浮点型
5 string                                                         string
6 array                                                          固定长度的数组
7 struct                                                         结构体

  引用类型:(指针类型)

1 slice       切片
2 map         映射
3 chan        管道
4 interface   接口

三、内置函数

  Go 语言拥有一些不需要进行导入操作就可以使用的内置函数。它们有时可以针对不同的类型进行操作,例如:len、cap 和 append,或必须用于系统级的操作,例如:panic。因此,它们需要直接获得编译器的支持。

 1 append          -- 用来追加元素到数组、slice中,返回修改后的数组、slice
 2 close           -- 主要用来关闭channel
 3 delete            -- 从map中删除key对应的value
 4 panic            -- 停止常规的goroutine  (panic和recover:用来做错误处理)
 5 recover         -- 允许程序定义goroutine的panic动作
 6 imag            -- 返回complex的实部   (complex、real imag:用于创建和操作复数)
 7 real            -- 返回complex的虚部
 8 make            -- 用来分配内存,返回Type本身(只能应用于slice, map, channel)
 9 new                -- 用来分配内存,主要用来分配值类型,比如int、struct。返回指向Type的指针
10 cap                -- capacity是容量的意思,用于返回某个类型的最大容量(只能用于切片和 map)
11 copy            -- 用于复制和连接slice,返回复制的数目
12 len                -- 来求长度,比如string、array、slice、map、channel ,返回长度
13 print、println     -- 底层打印函数,在部署环境中建议使用 fmt 包

  init函数

    go语言中init函数用于包(package)的初始化,该函数是go语言的一个重要特性。

  特征:

1 init函数是用于程序执行前做包的初始化的函数,比如初始化包里的变量等
2 每个包可以拥有多个init函数
3 包的每个源文件也可以拥有多个init函数
4 同一个包中多个init函数的执行顺序go语言没有明确的定义(说明)
5 不同包的init函数按照包导入的依赖关系决定该初始化函数的执行顺序
6 init函数不能被其他函数调用,而是在main函数执行之前,自动被调用

  main函数    

1 Go语言程序的默认入口函数(主函数):func main()
2 函数体用{}一对括号包裹。
3 func main(){
4     //函数体
5 }

  init函数和main函数的异同

1 相同点:
2     两个函数在定义时不能有任何的参数和返回值,且Go程序自动调用。
3 不同点:
4     init可以应用于任意包中,且可以重复定义多个。
5     main函数只能用于main包中,且只能定义一个。

  两个函数的执行顺序

1 两个函数的执行顺序:
2   1.对同一个go文件的init()调用顺序是从上到下的。
3   2.对同一个package中不同文件是按文件名字符串比较“从小到大”顺序调用各文件中的init()函数。
4   3.对于不同的package,如果不相互依赖的话,按照main包中”先import的后调用”的顺序调用其包中的init(),     如果package存在依赖,则先调用最早被依赖的package中的init(),最后调用main函数。

原文地址:https://www.cnblogs.com/a2534786642/p/11041907.html

时间: 2024-10-18 08:31:13

03 Go语言特性的相关文章

Java8新语言特性

Java8简明指南 欢迎来到Java8简明指南.本教程将一步一步指导你通过所有新语言特性.由短而简单的代码示例,带你了解如何使用默认接口方法,lambda表达式,方法引用和可重复注解.本文的最后你会熟悉最新的API的变化如Stream,Fcuntional,Map API扩展和新的日期API. 接口的默认方法 在Java8中,利用default关键字使我们能够添加非抽象方法实现的接口.此功能也被称为扩展方法,这里是我们的第一个例子: interface Formula { double calc

Go的语言特性总结

写在前面: 近来关于对Golang的讨论有很多,七牛的几个大牛们也断定Go语言在未来将会快速发展,并且很可能会取代Java成为互联网时代最受欢迎的编程语言.Go语言是google推出的编程语言,在已经成功的给世人创造了改变人们生活的操作系统之后,google似乎感觉有必要再为世人带来一款强大的编程语言,而Go语言依靠自己众多友好的特性也不负众望正在被开发者接触,我有幸在学习高性能并发编程的时候认识了Go语言,在了解了Go的一些特性之后决定系统的学习一番.我发现关于Go的学习资料并不多,以至于我需

Java基础学习(一)——语言特性及开发环境搭建

学习了一段时间的Java,想通过几篇文章做一下这一段时间的学习总结.由于有c/c++的一些基础,总的来说Java语言还是挺具有亲和感的.虽然经常到博客园找资料,但是也一直没有自己动手写过博客,现在练练手,也为日后有个回忆吧. 一,Java简介 1.语言起源 语言起源:Java是SUN ( Stanford University Network 斯坦福大学网络公司 ) 1995年推出的一门高级编程语言.Java名称的来源Java最初被命名为Oak,目标在于家用电器等小型系统的编程语言,随着市场的变

从头开始-03.C语言中数据类型

基本数据类型 整形: Int 4字节 %d / %i Short 2字节 %hd Long 8字节 %ld Longlong 8字节 %lld Unsigned 4字节 % 浮点型 单精度 Float 4字节 %f 双精度 Double 8字节 %lf 字符  char   1字节   %c 枚举:当一个变量只用几个固定的取值的时候使用枚举 特点:先定义枚举类型,然后使用枚举类型定义枚举变量 作用:提高代码的可读性,方便程序员之间的交流 注意:枚举类型的实质是整形 枚举定义的每一个成员都代表一个

03 java语言基础逻辑运算符

03.01_Java语言基础(逻辑运算符的基本用法)(掌握) A:逻辑运算符有哪些 &,|,^,! &&,|| B:案例演示 逻辑运算符的基本用法 注意事项: a:逻辑运算符一般用于连接boolean类型的表达式或者值. b:表达式:就是用运算符把常量或者变量连接起来的符合java语法的式子. 算术表达式:a + b 比较表达式:a == b(条件表达式) C:结论: &逻辑与:有false则false. |逻辑或:有true则true. ^逻辑异或:相同为false,不同

Atitit.rust语言特性 attilax 总结

Atitit.rust语言特性 attilax 总结 1. 创建这个新语言的目的是为了解决一个顽疾:软件的演进速度大大低于硬件的演进,软件在语言级别上无法真正利用多核计算带来的性能提升.1 2. 不会出现Null指针等等1 2.1.1. Rust 1.1 稳定版 更新内容1 2.1.2. Rust 1.2 测试版 更新内容2 3. RAII2 3.1. 无数据竞争(Data Race)…无需竞争的并发,Rust能够确保在并发编程中的数据安全3 4. 是基于继承的组合,Rust能基于继承实现组合,

我想要的程序开发语言特性——之“面向对象”——之“退化”

先从一个例子开始讲起,以下是jdk1.7中的迭代器接口的代码(去掉了注释的部分): public interface Iterator<E> {    boolean hasNext();    E next();    void remove();} 程序开发的老油条们都不太喜欢这个接口的remove方法,原因可能是: 我们为自己实现Iterator接口时,基本不需要这个方法,但我们却不得不@Override它,此时通常我们会直接在方法体中写一行throw new UnsupportedOp

特殊用途语言特性:默认实参,内联函数和constexpr函数,调试帮助

重点: 1.三种函数相关的语言特性:默认实参,内联函数和constexpr函数. 2.默认实参:某些函数有一种形参,在函数的很多次调用中它们都被赋予一个相同的值. 3.一旦某个形参被赋予了默认值之后,它后面的所以形参都必须要默认值. 4.若想使用默认形参,只要在调用函数时省略该实参即可. Tip:Window = screen ( , , ‘?’ );//错误:只能省略尾部的实参! 5.对于函数的声明来说,习惯将其放在头文件当中,在给定的作用域中一个形参只能赋予一次默认实参. NOTE:通常,应

C高级篇(非BUG的语言特性)

许多新手程序员经常会犯的一种错误,就是将 i = 3; 与 i == 3 相互混淆,前者表示一个赋值语句,而后者常常作为判断的条件.还有的程序员想将指针指向NULL时,写成了p == NULL; 这样的话变成了什么?不过不用担心,这种错误编译器能够辨别. NUL与NULL:在C语言中,NUL表示一个字符串的结束,用字符表示为'\0',我们通常用'\0'这种字符常量作为判断条件而不是NUL.NULL表示为空,用NULL表示什么也不指向(即空指针). switch.case.default:在用sw