Golang基础知识学习

一、Golang介绍

二、Golang开发工具

  • vim
  • sublime
  • atom
  • LiteIDE
  • eclipse
  • goland
  • vscode

2.1 vscode的快捷键

快捷键位置:File->Preferences->Keyboard Shortcuts

常用快捷键:

  • 行注释 ctrl + /
  • 块注释 shift + alt + a(可修改为 ctrl + shift + /)
  • 全选 ctrl + a
  • 复制 ctrl + c
  • 粘贴 ctrl + v
  • 删除行 ctrl + shift + k
  • 查找文件 ctrl + e
  • 打开设置命令行 ctrl + shift + p

修改快捷键:

  1. 打开快捷键 File->Preferences->Keyboard Shortcuts
  2. 双击要修改的快捷键
  3. 键盘输入想要使用的快捷键

快速生成代码片段:

  • pkgm: main包+main主函数
  • ff:fmt.Printf(“”, var)
  • for:for i := 0; i < count; i++ {}
  • forr:for _, v := range v {}
  • fmain:func main(){}
  • a.print!:fmt.Printf(“a: %v\n”, a)

三、Golang常用命令

在终端中直接输入go help即可显示所有的go命令及相应命令的功能介绍

  1. build:编译包和依赖,生成可执行文件
  2. clean:移除对象文件
  3. doc:显示包或者符号的文档
  4. env:打印go的环境信息
  5. bug:启动错误报告
  6. fix:运行go tool fix
  7. fmt:运行gofmt进行格式化
  8. generate:从processing source生成go文件
  9. get:下载并安装包和依赖(使用之前,需要用go mod init 工程名)
  10. install:编译并安装包和依赖
  11. list:列出包
  12. run:编译并运行go程序
  13. test:运行测试
  14. tool:运行go提供的工具
  15. version:显示go的版本
  16. vet:运行go tool vet

三、Golang标识符、关键字、命令规则

3.1 标识符

就是给变量、常量、函数、方法、结构体、数组、切片、接口起名字

标识符组成:
1、标识符由数字、字母、下划线组成
2、只能以字母和下划线开头
3、标识符区分大小写

3.2 变量

变量是计算机语言中能存储计算结果或能表示值的抽象概念。不同变量保存的数据类型可能会不一样

声明变量
Go语言中的变量需要声明后才能使用,同一作用域内不支持重复声明,并且Go语言的变量声明后必须使用

声明变量的语法

var 变量名称 变量类型
package main

import "fmt"

func main(){
	var name string
	var age int
	var isstudent bool
}

批量声明

package main

import "fmt"

func main(){
	var (
		name string
		age int
		isstudent bool
	)
}

变量的初始化
Go语言在声明变量的时候,会自动对变量对应的内存区域进行初始化操作,每个变量会被初始化成其类型的默认值,例如:整型和浮点型变量的默认值为0,字符串变量的默认值为空字符串"",布尔型变量默认为false,切片、函数、指针变量的默认为nil

变量初始化语法

var 变量名 类型 = 表达式
package main

import "fmt"

func main(){
	var (
		name string = "小明"
		age int = 18
		isstudent bool = true
	)

	fmt.Println("name: %v\n", name)
	fmt.Println("age: %v\n", age)
	fmt.Println("isstudent: %v\n", isstudent)
}

类型推导
通过给变量的赋值,即可知道变量类型,从而省略类型

package main

import "fmt"

func main(){
	var (
		name = "小明"
		age = 18
		isstudent = true
	)

	fmt.Println("name: %v\n", name)
	fmt.Println("age: %v\n", age)
	fmt.Println("isstudent: %v\n", isstudent)
}

初始化多个变量
可以一次初始化多个变量,中间用逗号分隔

package main

import "fmt"

func main(){
	var name, age, isstudent = "小明", 18, true

	fmt.Println("name: %v\n", name)
	fmt.Println("age: %v\n", age)
	fmt.Println("isstudent: %v\n", isstudent)
}

短变量声明
在函数内部,可以使用 := 运算符对变量进行声明和初始化

package main

import "fmt"

func main(){
	name := "小明"
	age := 18
	isstudent := true

	fmt.Println("name: %v\n", name)
	fmt.Println("age: %v\n", age)
	fmt.Println("isstudent: %v\n", isstudent)
}

⚠️:这种方法只适合在函数内部,函数外部不能使用;不用给变量加var 和 类型

匿名变量
如果我们接收到多个变量,有一些变量使用不到,可以使用下划线_表示变量名称,这种变量叫做匿名变量。

package main

import "fmt"

func getTest() (string, int)  {
	return "小明", 30
}

// func getTest() (name string, age int)  {
// 	return "小明", 30
// }

func main(){
	name, _ := getTest()
	fmt.Println("name: %v\n", name)
}

3.3 Go语言常量

常量就是在程序编译阶段就确定下来的值,程序在运行时无法改变该值。在Go程序中,常量可以是数值类型(包括整型、浮点型和复数类型)、布尔类型、字符串类型等

定义常量的语法
定义一个常量使用const关键字,语法如下

const 常量名称 [常量类型] = value
package main

import "fmt"

func main(){
	const PI float32 = 3.14
	const PI2 = 3.1415
	fmt.Println("PI: %v\n", PI)
	
	const (
		a = 100
		b = 200
	)
	fmt.Println("a: %v\n", a)
	fmt.Println("b: %v\n", b)

	const w, h = 200, 100
	fmt.Println("w: %v\n", w)
	fmt.Println("h: %v\n", h)
}

iota
iota比较特殊,可以被认为是一个可被编译器修改的常量,它默认开始值是0,每调用一次加1。遇到const关键字时被重置为0。

package main

import "fmt"

func main(){
	const(
		a1 = iota
		a2 = iota
		a3 = iota
	)
	fmt.Println("a1: %v\n", a1)
	fmt.Println("a2: %v\n", a2)
	fmt.Println("a3: %v\n", a3)
}

输出结果:

a1:0
a2:1
a3:2

使用_跳过某些值

package main

import "fmt"

func main(){
	const(
		a1 = iota
		_
		a2 = iota
	)
	fmt.Println("a1: %v\n", a1)
	fmt.Println("a2: %v\n", a2)
}

输出结果:

a1:0
a2:2

iota声明中间插队

package main

import "fmt"

func main(){
	const(
		a1 = iota
		a2 = 100
		a3 = iota
	)
	fmt.Println("a1: %v\n", a1)
	fmt.Println("a2: %v\n", a2)
	fmt.Println("a3: %v\n", a3)
}

输出结果:

a1:0
a2:100
a3:2

四、Golang格式化输出

4.1 占位符

4.1.1 普通占位符

package main

import "fmt"

type WebSite struct {
	Name string
}

func main() {
	site := WebSite{Name: "ua ua ua"}
	fmt.Printf("site: %v\n", site)
	fmt.Printf("site: %#v\n", site) 
	fmt.Printf("site: %T\n", site) //打印类型
	a := 100
	fmt.Printf("a: %T\n", a)
	fmt.Printf("%%")
}

4.1.2 布尔占位符

package main

import "fmt"

func main() {
	b := true
	fmt.Printf("\nb: %t\n", b)
}

4.1.3 整数占位符

  • %b:二进制表示
  • %c:相应unicode编码所表示的字符
  • %d:十进制表示
  • %o:八进制表示
  • %q:单引号围绕的字符字面值,由Go安全的转译
  • %x:十六进制表示,字母形式为小写 a-f
  • %X:十六进制表示,字母形式为小写 A-F
  • %U:unicode格式,U+1234,等同于“U+%04X”
package main

import "fmt"

func main() {
	i := 8
	fmt.Printf("i: %v\n", i) //
	fmt.Printf("i: %b\n", i) //二进制的输出
	i = 96
	fmt.Printf("i: %c\n", i) //字符输出
	fmt.Printf("i: %x\n", 1234) //16进制输出
}

4.1.4 浮点数和复数的组成部分(实部和虚部)

  • %b:无小数部分的,指数为2的幂的科学计数法
  • %e:科学计数法
  • %E:科学计数法
  • %f:有小数点而无指数
  • %g:
  • %G:

4.1.5 字符串与字节切片

  • %s:输出字符串表示(string类型或[]byte)
  • %q:双引号围绕的字符串,由Go安全的进行转义
  • %x:十六进制,小写字母,每字节两个字符
  • %X:十六进制,大写字母,每字节两个字符

4.1.6 指针

  • %p:十六进制表示,前缀0x
package main

import "fmt"

func main() {
	x := 100
	p := &x
	fmt.Printf("p: %p\n", p) //输出指针地址
}

输出结果:

p: 0x140000b2008

你可能感兴趣的:(GO,golang,学习,vscode)