2

Go 语言教程

 2 years ago
source link: https://backtraxe.github.io/posts/go-%E8%AF%AD%E8%A8%80%E6%95%99%E7%A8%8B/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Go 语言教程

 2021-10-11  2021-10-11  约 1110 字   预计阅读 3 分钟 
本文最后更新于 2021-10-11,文中内容可能已过时。
// 包
package main

// 导包
import (
   "fmt"
)

// 常量
const c = "C"

// 变量
var v int = 5

// 自定义类型
type T struct {

}

// init() 函数,最先执行
func init() {

}

// main() 函数,其次执行
func main() {
   var a int
   Func1()
   // ...
   fmt.Println(a)
}

// 自定义可导出(公开)函数
func Func1() {
   //...
}

// 自定义不可导出(私有)函数
func func2() {

}
  • 虽然不需要分号作为语句的结束,但实际上这一过程是由编译器自动完成
  • 不存在隐式类型转换,所有类型转换必须显式说明,如a := int(b)
  • 标识符的命名规则遵循骆驼命名法
  • \作为多行连接符
// 单行注释
/*
多行注释
*/
  • 可通过godoc来导出注释,显示文档说明。
  • 每一个包应该有相关注释。
  • package语句之前的块注释将被默认认为是这个包的文档说明,称为包注释
  • 一个包可以有多个文件,只需要在其中一个文件中添加包注释。
  • 所有全局的类型、常量、变量、函数和被导出的对象都应有注释。若出现在函数前面,称为文档注释,例如函数Abc(),则注释为// Abc ...
  • public:标识符以大写字母开头,如Name
  • private:标识符以小写字母开头,如id
import (
    fm "fmt"      // 别名
   "os"
   "./local_pkg" // 本地包
)
  • 导入的包未使用报错。
func funcName(p1 int, p2 int) (add int, sub int) {
    return p1 + p2, p1 - p2
}

// 函数很短,也可以放在同一行
func Sum(a, b int) int { return a + b }

main()函数:

  • main()函数是程序第一个执行的函数(如果有init()函数则会先执行init()
  • main包必须包含main()函数
  • main()函数既没有参数,也没有返回类型
  • 基本类型
    • intfloatboolstring
  • 复杂类型
    • structarrayslicemapchannelinterface
    • 空值:nil
  • 类型别名
    • type si map[string]int类似#define si map<string, int>typedef map<string, int> si;
type (
    IZ int
    FZ float64
    STR string
)
const Pi float = 3.14159265358979323846

const (
	Unknown = 0
	Female = 1
	Male = 2
)
  • 类型包括:boolintfloatcomplexstring
  • 类型可省略
  • 任何精度,不会溢出
// 赋值一个常量时,之后没赋值的常量都会应用上一行的赋值表达式
const (
	a = iota  // a = 0
	b         // b = 1
	c         // c = 2
	d = 5     // d = 5   
	e         // e = 5
)
const (
	Open = 1 << iota  // 0001
	Close             // 0010
	Pending           // 0100
)
  • 每遇到一次const关键字,iota就重置为0
var a, b int = 1, 2
var (
    c int
    d bool
    e string
)
  • 变量声明后,自动赋零值
    • int0float0.0boolfalsestring"",指针为nil
  • 内层代码块中可使用与外部代码相同名称的变量,此时外部的同名变量将会暂时隐藏(内层不改变外部变量值)

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK