Go 基础语法

GOPATH

.(GOPATH的路径)

├── bin (编译后生成的可执行文件)

├── pkg (编译时生成的中间文件:.a)

└── src (源代码)

  • 对于导入的包,编译器的查找顺序:GOROOT -> 项目 GOPATH -> 全局 GOPATH
  • Golang 不要求包名和目录名一致,import 导入的是源文件在 src 目录的相对路径,而不是包名,而调用方法的格式为 packageName.FunctionName
  • 同一个目录下只能有一个包名

变量与常量

  • := 只能被用在函数体内,不能用于全局变量的声明与赋值
  • 函数体内声明的变量必须被使用,全局变量允许不被使用
  • unsafe.Sizeof() 用于获取变量或数据类型在内存中占用的字节数(不考虑内存对齐和填充的情况)
  • 没有被显式赋值的常量将自动使用上一个常量的值

函数

  • 如果首字母是小写,则只能在包内使用;如果首字母是大写,则可以在包外被引入使用
  • Golang 中函数的参数传递都是值传递(函数参数和返回值都会被复制)
  • Golang 中的函数可以有任意多个返回值
  • 函数闭包:函数内部的匿名函数引用了外部作用域的变量,该变量由于内存逃逸会被分配到堆上,由 GC 管理
  • defer 会将函数推迟到外层函数返回之后执行。推迟调用的函数其参数会立即求值(defer 语句出现时就已经确定下来了),但直到外层函数返回前该函数都不会被调用
  • return 不是原子级操作,执行过程为:设置返回值 -> 执行 defer 语句 -> 返回

异常捕获

recover() 捕获当前函数级(该函数及其调用的函数)中的 panic(),捕获后当前函数结束,后面的代码不会被执行,但调用该函数的函数继续执行

接口

  • 空接口:所有的类型都实现了空接口,空接口可以存储任意类型的数值
  • 类型断言:类型断言返回的是一个值

结构体

结构体内声明变量无需使用 var

数组与切片

  • 数组大小不可改变
  • a[low : high] 左闭右开区间
  • Golang 中的切片,不是拷贝,而是定义了新的指针,指向原来数组所在的内存空间

字符串

for range 遍历字符串时,返回的是 Unicode 码点(rune)

字典

for range 遍历字典时,顺序是随机的

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
下一篇