Go 基本语法

一、​​​​变量定义方法

var 定义变量
  • var 变量名 类型 = 表达式
Go 复制代码
var name string = "Snail"
var age int =21
var isOK bool bool
2.类型推导方式定义变量
  • a 在函数内部,可以使用更简略的:= 方式声明并初始化变量
  • **注意:**短变量只能用于声明局部变量,不能用于全局变量的声明
Go 复制代码
// 变量名 :=表达式
n := 10
var age = 18
3.一次定义多个变量
Go 复制代码
package main
import  "fmt"
func main(){
    var username ,sex string
    username = "蜗牛"
    sex = "男"
    fmt.Println(username, sex)
}
4.批量声明变量
Go 复制代码
package main
import "fmt"
func main(){
    var (
        a string
        b int 
        c bool
    )
    a = "蜗牛"
    b = 10
    c = true
    fmt.PrintIn(a,b,c)
}

二、常量定义

  • 声明了 pi 和 e 这两个常量之后,在整个程序运行期间它们的值都不能在发生变化了
Go 复制代码
const pi = 3.1415
const e = 2.7182

//多个常量也可以一起声明
const (
   pi = 3.1415
    e = 2.7182
)
  • const同时声明多个常量时,如果省略了值啧表示和上面一行的值相同
Go 复制代码
const(
    n1 = 100
    n2
    n3
)
// 上面示例中,常量n1、n2、n3的值都是 100

三、fmt 包

  • PrintIn:
    • 一次输入多个值的时候 PrintIn 中间有空格
    • PrintIn 会自动换行,Print 不会
  • Print:
    • 一次输入多个值的时候 Print 中间没有空格
    • Print 不会自动换行
  • Printf
    • Printf 是格式化输出,在很多场景在比 PrintIn 更方便
Go 复制代码
Package  main

import   "fmt"

func main() {
    fmt.Print("蜗牛","白河车","pupu")      //蜗牛白河车pupu
    fmt.PrintIn("蜗牛","白河车","pupu")    //蜗牛 白河车 pupu

    name := "蜗牛"
    age := 21

    fmt.Printf("%s 今年 %d 岁",name,age)   //蜗牛 今年 21 岁
}

四、 init 函数和 main 函数

1.init 函数
  • go 语言中 init 函数用于包(package)的初始化,该函数是 go 语言的一个重要特性
  • 有下面的特征:
    • init 函数是用于程序执行前做包的初始化函数,比如初始化包里的变量等
    • 每个包可以拥有多个 init 函数
    • 包的每个源文件也可以拥有多个 init 函数
    • 同一个包中多个 init 函数的执行顺序 go 语言没有明确的定义(说明)
    • 不同包的 init 函数按照包导入的依赖关系决定该初始化函数的执行顺序
    • init 函数不能被其他函数调用,而是在 main函数执行之前,自动被调用
2.main 函数
Go 复制代码
//Go 语言程序的默认入口函数(主函数):func main()
//函数体用{}一对括号包裹

fun main(){
    //函数体
}
3.init 函数和 main 函数的异同
  • 相同点:
    • 两个函数在定义时不能有任何的参数和返回值,且 Go 程序自动调用
  • 不同点:
    • init 可以应用于任意包中,且可以重复定义多个
    • main 函数只能用于用于 main 包中,且只能定义一个
  • 两个函数的执行顺序:
    • 对同一个 go 文件的 init()调用顺序是从上到下的
  • 对同一个 package 中不同文件是按文件名字符串比较"从小到大"顺序调用各文件中的 init 函数
    • 对不同的 package,如果不相互依赖的话,按照 main 包中先 import 的后调用的顺序调用其包中的 init()
  • 如果 package 存在依赖,则先调用最早被依赖的 package 中 init(),最后调用 main 函数
    • 如果 init 函数中使用了 printIn()或者 print()你会发现在执行过程中这两个不会按照你想象中的顺序执行
    • 这两个函数官方只推荐在测试环境中使用
4.init() 函数介绍
  • 在 Go 语言程序执行时导入包语句会自动触发包内部 init()函数的调用
  • 需要注意的是:init()函数没有参数也没有返回值
  • init()函数在程序运行时自动被调用执行,不能在代码中主动调用它
  • 包初始化执行的顺序入下图所示:

五、命令

  1. go env 用于打印 Go 语言的环境信息
  2. go run命令可以编译并运行命令源码文件
  3. go get 可以根据要求和实际情况从互联网上下载货更新指定的代码包及其依赖包,并对它们进行编译和安装
  4. go build 命令用于编译我们指定的源码文件货代码包以及它们的依赖包
  5. go install用于编译并安装指定的代码包及它们的依赖包
  6. go clean 命令会删除掉执行其他命令是产生的一些文件和目录
  7. go doc命令可以打印附于 Go 语言程序实体上的文档。我们可以通过把程序实体的标识符作为该命令的参数来达到查看其文档的目的
  8. go test命令用于对 Go 语言编写的程序进行测试
  9. go list命令的作用是列出指定的代码包的信息
  10. go fix会把指定代码包的所有 Go 语言源码文件中的旧版本代码修正为新版本的代码
  11. go vet是一个用于检查 Go 语言源码中静态错误的简单工具
  12. go tool pprof 命令来交互式的访问概要文件的内容

六、golang 中关键字

  • var 和 const:变量和常量的声明
  • package and import:导入
  • func:用于定义函数和方法
  • return:用于从函数返回
  • defer someCode:在函数退出之前执行
  • go:用于并行
  • select: 用于选择不同类型的通讯
  • interface: 用于定义接口
  • struct:用于定义抽象数据类型
  • break、case、continue、for、fallthrough、else、if、switch、goto、default、流程控制
  • chan:用于 channel 通讯
  • type:用于声明自定义类型
  • map:用于声明 map 类型数据
  • range:用于读取 slice、map、channel数据
相关推荐
Themberfue几秒前
基础算法之双指针--Java实现(下)--LeetCode题解:有效三角形的个数-查找总价格为目标值的两个商品-三数之和-四数之和
java·开发语言·学习·算法·leetcode·双指针
深山夕照深秋雨mo9 分钟前
在Java中操作Redis
java·开发语言·redis
barbyQAQ27 分钟前
Qt源码阅读——事件循环
开发语言·数据库·qt
记得开心一点嘛28 分钟前
在Java项目中如何使用Scala实现尾递归优化来解决爆栈问题
开发语言·后端·scala
敏编程44 分钟前
网页前端开发之Javascript入门篇(5/9):函数
开发语言·javascript
柏箱1 小时前
PHP基本语法总结
开发语言·前端·html·php
进阶的架构师1 小时前
互联网Java工程师面试题及答案整理(2024年最新版)
java·开发语言
易辰君1 小时前
python爬虫 - 深入requests模块
开发语言·爬虫·python
木子02041 小时前
java高并发场景RabbitMQ的使用
java·开发语言
无夜_1 小时前
Prototype(原型模式)
开发语言·c++