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数据
相关推荐
新手小袁_J12 分钟前
java.lang.IllegalStateException: Error processing condition on org.springframework.boot.autoconfigur
java·开发语言·spring·spring cloud·bootstrap·maven·mybatis
墨鸦_Cormorant12 分钟前
Java 创建图形用户界面(GUI)组件详解之下拉式菜单(JMenu、JMenuItem)、弹出式菜单(JPopupMenu)等
java·开发语言·gui
cccccc语言我来了13 分钟前
c++-----------------多态
java·开发语言·c++
南鸢1.015 分钟前
11张思维导图带你快速学习java
java·开发语言
sunny-ll17 分钟前
【C++】explicit关键字详解(explicit关键字是什么? 为什么需要explicit关键字? 如何使用explicit 关键字)
c语言·开发语言·c++·算法·面试
泯泷17 分钟前
JS代码混淆器:JavaScript obfuscator 让你的代码看起来让人痛苦
开发语言·javascript·ecmascript
轩源源21 分钟前
C++草原三剑客之一:继承
开发语言·数据结构·c++·算法·青少年编程·继承·组合
每天写点bug3 小时前
【go每日一题】 责任链模式的实现
开发语言·golang·责任链模式
半盏茶香3 小时前
C语言勘破之路-最终篇 —— 预处理(下)
c语言·开发语言·c++·算法
时雨h3 小时前
30天面试打卡计划 2024-12-25 26 27 面试题
java·开发语言·数据库