基础语法-注释

单行注释与多行注释

注释的主要功能是增强对代码的理解,不参与代码的运行。Go语言中的注释主要为单行注释与多行注释

package main

import "fmt"

// 单行注释
/*
	main函数,go语言入口
	注释和Hello World
*/
func main() {
	// 打印一句话,并换行
	fmt.Println("Hello World!!")
}

基础语法-变量

变量:可变化的量。

变量的定义与初始化

Go语言是静态类型语言,所有的类型都要明确定义,变量定义之后必须使用

一次定义一个

// var是声明变量的关键字,固定写法
// name就是变量的名称
// string: type代表变量的类型
// var 变量名 变量类型 
// 每行代码 行尾无分号
var name string

一次多个

func func01() {
	var name string = "刘备"
	var age int = 19
	fmt.Println(name, age)
	/*
		批量定义
		未赋值的话,变量为该类型的默认值
		整型和浮点型默认值为0和0.0
		字符串默认值为空字符串
		布尔类型默认为false
		切片、函数、指针变量的默认值nil
		
		建议使用驼峰命名法
	*/
	var (
		label    string
		value    int
		ex       string
		userInfo string = "{name=刘备,age=19}"
	)
	fmt.Println(label, value, ex, userInfo)
	// 直接赋值
	tree := "树木"
	river := "大河"
	riverLength := 18000
	fmt.Println(tree, river, riverLength)
	// 打印类型
	fmt.Printf("%T,%T", riverLength, tree)
	// 打印数字类型
	fmt.Printf("riverLength:%d,内存地址:%p", riverLength, &riverLength)
}

匿名变量

可以使用下划线接收变量,接收后该变量丢失,在这种场景下使用(即在调用函数时为了获取一个值,却因为该函数返回多个值而不得不定义一堆没用的变量)使用使得代码整洁,

func func03() {
	a, _ := test()
	_, b := test()
	fmt.Println(a, b)
}

func test() (int, int) {
	return 100, 200
}

变量的交换

Go语言的变量交换较为简单

func func02() {
	var a int = 100
	var b int = 200
	b, a = a, b
	fmt.Printf("a = %d , b = %d", a, b)
}

变量的作用域

变量的作用范围

函数体类内声明的为局部变量

作用域只在函数体内,函数的参数和返回值都属于局部变量

package main

import "fmt"

func main() {
	// 函数内定义局部变量
	var (
		a string = "a"
		b int    = 2
		// 顶一个全局变量name,也可以定义一个局部变量name,不过取值时就近一致
		name        = "局部变量name"
	)
	fmt.Println(a, b, name)
}

函数体外声明的为局部变量

package main

import "fmt"

var name string = "全局变量name"

func main() {
	// 函数内定义局部变量
	var (
		a string = "a"
		b int    = 2
		// 顶一个全局变量name,也可以定义一个局部变量name,不过取值时就近一致
		name = "局部变量name"
	)
	fmt.Println(a, b, name)
}