Go语言-基础语法

一、Go代码运行方式

选择Go项目模版,项目路径自选,不要带中文字符。

环境变量填入GOPROXY=https://goproxy.cn,direct,使用国内七牛云的Go代理

新建项目
方式一:右键【项目入口文件】-【Run】
方式二:打开【控制台】-输入go run .\main.go
方式三:在Goland右上角选中【项目入口文件】-点击【开始】
方式四:打开【项目入口文件】-点击主函数的绿色三角-【Run】

二、注释

// 这是单行注释
/*
 这是多行注释
 能注释多行信息
*/

三、变量

变量定义

新建1.变量定义.go文件,输入如下内容:

package main

import "fmt"

func main() {
	// 声明变量
	var name string
	// 赋值
	name = "小超"
	// 输出变量
	fmt.Println(name)
}
输出
小超
Go语言变量光定义不使用,会报错。定义变量一定要使用。

变量声明三种方式:

1.指定变量类型

// 声明
var name string
// 初始化
name = "小超"
fmt.Println(name)
输出
小超

如果没有初始化,则变量默认为零值。

// 声明,不初始化
var name string
fmt.Println(name)

var num int
fmt.Println(num)

var flag bool
fmt.Println(flag)
输出
// 输出为空字符串
0
false

2.根据值自行判定变量类型

// 声明并赋值
var flag = true
fmt.Println(flag)
输出
true

3.短变量声明:=

package main
import "fmt"

// 全局变量
var title = "Go语言"

func main() {
	// 声明并赋值
	name := "小超"
	fmt.Println(name)

	/*
	name := "小超"
	等同于
	var name string
	name = "小超"
	*/
}
输出
小超

如果变量已经使用 var 声明过了,再使用:=声明变量,会产生编译错误。

// 首次声明
var testStr string
// 再次声明
testStr := "测试" // 此时会出现编译错误,因为 testStr 变量已在上边声明,无需重复声明

全局变量与局部变量

局部变量:定义在函数体内的变量,此类变量定义后必须使用。

全局变量:定义在外部的变量,允许只定义不使用。

package main

import "fmt"

// 全局变量
var title = "Go语言"

func main() {
	// 局部变量
	var name string
	name = "小超"
	fmt.Println(name)
}
全局变量中,不允许使用 := 声明变量,会报错。一定要用 var 关键字声明变量。

多变量定义

Go语言支持同时定义多个同类型变量

package main

import "fmt"

func main() {
    var num1, num2 int
    num1, num2= 1, 2
    fmt.Println(num1, num2)

    // 或
    var num1, num2 int = 1, 2
    fmt.Println(num1, num2)

    // 或
    num1, num2 := 1, 2
    fmt.Println(num1, num2)
}

一般定义多个全局变量会这样写

package main

import "fmt"

var (
    name string = "小超"
    age int = 18
)

func main() {
    // 略...
}

五、常量

声明变量时就要赋初始值。

赋值后,不能被修改。

const version string = "1.0.0"
fmt.Println(version)

常量需要被跨包访问,变量首字母需要大写。

// about/about.go
package about

const Version = "0.1.0"
const date = "20260225"
// main.go
package main

import (
	"fmt"
	"go_study/about"
)

func main() {
	fmt.Println(about.Version) // 可以找到
	fmt.Println(about.date) // 出现报错,找不到about包下的date常量

}

六、输出

1.自带换行符输出

fmt.Println("Hello")
// 一次输出多个值,以空格分隔
fmt.Println("Hello", "World")
输出
Hello
Hello World

2.格式化输出

fmt.Printf("%s 语言是世界上最好的语言!", "Go")
输出
Go 语言是世界上最好的语言!

占位符

// 字符串
fmt.Printf("学习%s\n", "Go语言")
// 整数
fmt.Printf("人数为%d\n", 3)
// 浮点数
fmt.Printf("%f\n", 3.1415926)
// 保留两位有效小数
fmt.Printf("%.2f\n", 3.1415926)
输出
学习Go语言
人数为3
3.1415926
3.14

特殊占位符

// 输出值类型
fmt.Printf("%T %T\n", 3.1415926, 5)
// 任意输出
fmt.Printf("%v\n", "你好")
fmt.Printf("%v\n", 123)
fmt.Printf("%v\n", 3.14)
// 美化输出空字符串
fmt.Printf("%v\n", "")
fmt.Printf("%v#\n", "")
输出
float64 int
你好
123
3.14
// 实际这里输出空字符串,看不出来
“” // 这把空字符串换一种方式打印出来

3.格式化内容赋值给变量

title := fmt.Sprintf("%v", "大家好")
fmt.Println(title)
输出
大家好

七、输入

package main

import "fmt"

func main() {
	// 声明变量
	// 没有初始化,默认为零值
	var name string
	var age int

	// 输入名字
	fmt.Print("请输入名字:")
	nameVal, nameErr := fmt.Scan(&name) // fmt.Scan()函数会返回两个值,成功扫描的项数与错误信息
	fmt.Println(name, nameVal, nameErr) // 当没有错误时,nameErr输出<nil>,即空

	// 输入年龄
	fmt.Print("请输入年龄:")
	ageVal, ageErr := fmt.Scan(&age)
	fmt.Println(age, ageVal, ageErr) // 当检测到输入类型不正确时,ageErr输出错误信息
}
正常输入
请输入名字:小超
小超 1 <nil>
请输入年龄:18
18 1 <nil>
错误输入
请输入名字:小超
小超 1 <nil>
请输入年龄:abc
0 0 expected integer

七、基本数据类型

1.整数类型

Go整数类型有点多,具体有以下这几种

// 无符号随系统位数变化(32位或64位)
var num0 uint = 2
// 无符号8位
var num1 uint8 = 2
// 无符号16位
var num2 uint16 = 2
// 无符号32位
var num3 uint32 = 2
// 无符号64位
var num4 uint64 = 2

// 有符号随系统位数变化(32位或64位)
var num5 int = 2
// 有符号8位
var num6 int8 = 2
// 有符号16位
var num7 int16 = 2
// 有符号32位
var num8 int32 = 2
// 有符号64位
var num9 int64 = 2

需要注意以下几点:

  • 类型名前边带u是无符号(unsigned),只能正整数
  • 类型名后边数字是2进制的位数
  • uint8等同于byte,都是一个字节(8bit)
  • uint与int类型大小基于所用平台的位数
    例:如表
    uint8即8个2进制位,只能存正整数,范围从0到2812^8-1,即0到255
    int8也是8个2进制位,可以存储正/负整数,需要用1位存储符号,实际可用只有7位,因此范围从27-2^72712^7-1,即-128到127
第8位第7位第6位第5位第4位第3位第2位第1位
uint8数值数值数值数值数值数值数值数值
int8符号数值数值数值数值数值数值数值

2.浮点类型

// 32位
float32
// 64位
float64

float32范围从‌3.4×1038-3.4×10^{38}3.4×10383.4×10^{38}

3.复数

4.布尔类型

5.字符串类型

参考

fengfengzhidao.com

https://www.fengfengzhidao.com/special/1/1

【8小时入门go语言开发|2023重制版】 https://www.bilibili.com/video/BV1zu4y187Wb/?p=1/1

上一篇