go语言学习文档精简版

Go语言是一门开源的编程语言,目的在于降低构建简单、可靠、高效软件的门槛。Go平衡了底层系统语言的能力,以及在现代语言中所见到的高级特性。

你好,Go

Go 复制代码
package main // 程序组织成包

import "fmt" // fmt包用于格式化输出数据

// 主函数入口
func main() {
    // 输出语句
    fmt.Printf("hello world")
}

如果你没有本地的Go语言环境,可以通过浏览器在线方式学习: https://go.dev/play/

一、数据类型

1.1 变量

Go语言是一种静态类型的编程语言。

可以通过 var 声明一个或多个变量

Go 复制代码
var str = "apple"

也可以通过 := 语法来进行初始化变量的简写

Go 复制代码
str := "apple"

以上两种创建方式应用代码如下:

Go 复制代码
package main

import "fmt"

func main() {
	var a = "saycode" // 字符串
	fmt.Println(a)

	var b, c int = 1, 2 // 整型
	fmt.Println(b, c)

	var d = true 	// 布尔型
	fmt.Println(d)

	var e int		// 声明变量类型为 int
	fmt.Println(e)

    // 简化方式
	f := "apple" // 字符串
	fmt.Println(f)

	g := true	// 布尔型
	fmt.Println(g)
}

可以在同一行内创建多个变量

多行创建

Go 复制代码
name := "saycode"
age := 10

同行创建

Go 复制代码
package main

import "fmt"

func main() {
    name, age := "saycode", 10
    fmt.Println(name, age)
}

1.2 常量

常量是可不变的值,Go语言支持字符、字符串、布尔值和数字值的常量。

使用 const 关键字声明

错误案例

运行当前程序发现报错cannot assign to name (untyped string constant "I Like Go"),也就证实了,常量进行初始化值后,是不可以进行改变的。

Go 复制代码
package main

import "fmt"

func main() {
    const name := "I Like Go"
    name = "I Like Java"

    fmt.Println(name)
}

正确案例

将π作为常量进行声明,接着去计算出圆的面积。

Go 复制代码
package main

import "fmt"

const PI = 3.14

func main() {
	// 计算圆的面积
	const r = 2
	const area = PI * r * r

	fmt.Println(area)
}

二、格式化输出

2.1 默认方式

如果不确定要用什么,可以直接使用%v (最好使用特定)

Go 复制代码
fmt.Printf("我今年 %v 岁", 20)
// 我今年 20 岁
fmt.Printf("我叫 %v", "张三")
// 我叫 张三

2.2 字符串

当需要特定插入字符串时,可使用 %s

Go 复制代码
fmt.Printf("我叫 %s", "张三")

2.3 十进制整数

当需要特定插入十进制整数时,可使用%d

Go 复制代码
fmt.Printf("我今年 %d 岁", 10)
// 我今年 10岁

2.4 浮点数

当需要插入浮点数时,可使用 %f

.数字f (.2f),含义就是保留小数点后两位

Go 复制代码
fmt.Printf("我今年 %f 岁", 10.22)
// 我今年 10.220000岁
fmt.Printf("我今年 %.2f 岁", 10.22)
// 我今年 10.22岁

2.5 变量类型

当需要查看当前变量类型时,可使用%T

Go 复制代码
package main

import "fmt"

func main() {
    
	num := 10
	fmt.Printf("num类型为 %T", num)
}

三、选择结构

3.1 条件判断

if语句是一种用于判断条件的结构,他将根据布尔表达式,结果就是 (true 或 false)的结果来决定是否执行某段代码。

else 是不满足前一个 if 后去执行的代码块。

如下代码就是判断 x > 5(布尔表达式), 如果大于则执行"x大于5",否则执行 "x小于或等于5"

Go 复制代码
if x > 5 {
    fmt.Println("x大于5")
} else {
    fmt.Println("x小于或等于5")
}

3.2 if的嵌套

可以通过嵌套的方式去判断多个值

Go 复制代码
if x > 5 {
    fmt.Println("x大于5") 
} else if x < 5 {
    fmt.Println("x小于5")
} else {
    fmt.Println("x等于5")
}

if语句可以有初始化语句,初始化语句中创建的变量只在if语句块中使用。

以下代码是通过getLength方法去获取email字符串的长度,在去对长度进行判断大小是否小于1。

Go 复制代码
package main

import "fmt"

func main() {
	email := "nazhanpeng@163.com"
    // 语法糖创建
	if length := getLength(email); length < 1 {
		fmt.Println("邮箱长度小于1")
	} else {
		fmt.Println("邮箱没问题")
	}

}

func getLength(a string) int {
	return len(a)
}

四、方法

一个基本的函数需要包含函数名、参数列表、返回值类型和函数体。

例如定义一个函数名为add的函数,包含两个参数a、b,返回值类型为int类型,函数体是a+b计算两个整数的和。

Go 复制代码
func add(a int, b int) int {
    return a + b
}

函数可以有0个或多个参数。

4.1 返回结果

一般用于去终止函数并返回结果。在Go中可以返回单个值或多个值。

单个值返回已经在上面返回了。

4.1.1 多个值返回

Go 复制代码
package main

import "fmt"

func divide(a int, b int) (int, int) {
    quotient := a / b
    remainder := a % b
    return quotient, remainder
}

func main() {
    q, r := divide(4, 3)
    fmt.Println(q,r)
}

4.1.2 命名返回值

命名返回值在函数代码块内为局部变量,可以进行使用。

Go 复制代码
package main

import "fmt"

func rectangleArea(width, height int) (area int) {

    area = width * height
    return
}

func main() {
    area := rectangleArea(5,6)
    fmt.Println("area", area)
}

4.1.3 空返回语句

可以使用空return返回结果

Go 复制代码
package main

import "fmt"

func swap(a, b int) (x, y int) {
    x = b
    y = a
    return
}

func main() {
    x, y := swap(1,2)
    fmt.Println("x", y, "y", y)
}

4.1.4 按照值传递变量

意味着当一个变量传递给一个函数时,该函数收到的是该变量的副本。

我们发现x的值还是5,就说明函数无法去改变传递变量的值。

Go 复制代码
package main

import "fmt"

func main() {
	x := 5
	increment(x)

	fmt.Println("x=", x)

}

func increment(x int) {
	x++
}

明天继续更新,请关注我

相关推荐
傻啦嘿哟17 分钟前
如何使用 Python 开发一个简单的文本数据转换为 Excel 工具
开发语言·python·excel
大数据编程之光21 分钟前
Flink Standalone集群模式安装部署全攻略
java·大数据·开发语言·面试·flink
初九之潜龙勿用21 分钟前
C#校验画布签名图片是否为空白
开发语言·ui·c#·.net
风尚云网38 分钟前
风尚云网前端学习:一个简易前端新手友好的HTML5页面布局与样式设计
前端·css·学习·html·html5·风尚云网
Dola_Pan38 分钟前
C语言:数组转换指针的时机
c语言·开发语言·算法
ExiFengs38 分钟前
实际项目Java1.8流处理, Optional常见用法
java·开发语言·spring
paj12345678940 分钟前
JDK1.8新增特性
java·开发语言
IT古董1 小时前
【人工智能】Python在机器学习与人工智能中的应用
开发语言·人工智能·python·机器学习
繁依Fanyi1 小时前
简易安卓句分器实现
java·服务器·开发语言·算法·eclipse
湫ccc1 小时前
《Python基础》之pip换国内镜像源
开发语言·python·pip