You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

5.5 KiB

包管理

  1. 一个文件夹可以称为一个包
  2. 在文件夹(包)中可以创建多个文件
  3. 在同一个包下的文件中,必须指定包名称,且包名称要相同

重点:关于包的分类

  • main包
  • 非main包

如果是main包,必须写一个main函数,此函数就是项目的入口(main主函数),编译生成的就是一个可执行文件

非main包,用来将代码分类,分别放在不同的包和文件中

文件夹中编写功能是,功能(方法)的名字要大写 = >这样才能让外部调用

小写的只能内部调用

注意:

  • 调用其他包的功能,需要先 import 导入,然后再使用;调用自己包中的功能时,直接调用即可(无需导入)
  • 文件中的函数首字母是小写,表示此函数只能被当前包内部文件调用。首字母是大写,则意味着任何包都可以调用。

输出

在终端将想要展示的数据显示出来,例如:欢迎登录、请输入用户名等

  • 内置函数
    • print
    • println
  • fmt包(推荐)
    • fmt.Print
    • fmt.Println

扩展:进程里有 stdin/stdout/stderr

注释

单行,多行

数据类型

  • 整型,整数
  • 字符串,文本
  • 布尔型,真假
package main

import "fmt"

func main() {
	// 整型
	fmt.Println(666)
	fmt.Println(6 + 9)
	fmt.Println(6 - 9)
	fmt.Println(6 * 9)
	fmt.Println(16 / 9) // 商
	fmt.Println(16 % 9) // 余数

	// 字符串类型,特点:通过双引号
	fmt.Println("lihui")
	fmt.Println("钓鱼要掉刀鱼,刀鱼到岛上钓")
	fmt.Println("lihui" + "SB")
	//fmt.Println("lihui" + 666)
	fmt.Println("lihui" + "666")
	// 对比
	fmt.Println("1" + "2") // 结果:"12"
	fmt.Println(1 + 2)     // 结果:3

	// 布尔类型,真假
	fmt.Println(1 > 2) // false  假
	fmt.Println(1 < 2) // true   真
	fmt.Println(1 == 2)
	fmt.Println(1 >= 2)
	fmt.Println("lihui" == "sb")

	// 超前
	if 2 > 1 {
		fmt.Println("叫爸爸")
	} else {
		fmt.Println("孙子")
	}

}

变量

可以理解为昵称。

  • 声明 + 赋值

    var sd string = "老男孩lihui"
    fmt.Println(sd)
      
    var age int = 73
    fmt.Println(age)
      
    var flag bool = true
    fmt.Println(flag)
    
  • 先声明后赋值

    // 声明了一个字符类型变量 sd
    var sd string
    // 给sd变量赋值
    sd = "老男孩lihui"
    fmt.Println(sd)
    

变量名要求

  1. 只包含字母、数字、下划线
  2. 不能数字开头
  3. 不能使用关键字
breakdefaultfuncinterfaceselectcasedefergomapstructchanelsegotopackageswitchconstfallthroughifrangetypecontinueforimportreturnvar

建议

  1. 见名知意
  2. 驼峰命名

变量简写

name:= "lihui"

go编译器会认为声明变量不使用 就是耍流氓,声明必须使用,否则报错

作用域

如果我们定义了大括号,那么在大括号中定义的变量。

  • 不能被上级使用。
  • 可以在同级使用。
  • 可以再子级使用。

全局变量,未写在函数中的变量称为全局变量;不可以使用v1:=xx方式进行简化;可以基于因式分解方式声明多个变量;项目中寻找变量时最后一环。

局部变量,编写在函数{}里面的变量;可以使用任意方式简化;可以基于因式分解方式声明多个变量;

赋值及内存相关

name := "lihui"

image-20250613150030868

name := "lihui"
nickname := name

image-20250613150121048

name := "lihui"
nickname := name

name = "lihuibear"

image-20250613150428962

注意事项

使用int、string、bool这三种数据类型时,如果遇到变量的赋值则会拷贝一份。【值类型】

常量

const

可以定义局部,可以定义全局

iota

计数

package main

import "fmt"

func main() {

// iota
// 示例1

	const (
		v1 = 1
		v2 = 2
		v3 = 3
		v4 = 4
		v5 = 5
	)
	fmt.Println(v1, v2, v3, v4, v5)


// 示例2
/*
	const (
		v1 = iota
		v2
		v3
		v4
		v5
	)
	fmt.Println(v1, v2, v3, v4, v5)
*/

// 示例3
/*
	const (
		v1 = iota + 2
		v2
		v3
		v4
		v5
	)
	fmt.Println(v1, v2, v3, v4, v5)
*/

// 示例4:
/*
	const (
		v1 = iota + 2
		_
		v2
		v3
		v4
		v5
	)
	fmt.Println(v1, v2, v3, v4, v5)
*/

}

输入

让用户输入数据,完成项目交互。

  • fmt.Scan
  • fmt.Scanln
  • fmt.Scanf

条件语句

最基本

if 条件 {
    成立后此代码块执行
}else{
    不成立此代码块执行
}

多条件

package main

import "fmt"

func main() {
	var length int
	fmt.Print("请输入你的长度:")
	fmt.Scanln(&length)

	if length < 1 {
		fmt.Println("没用的东西,还特么是坑")
	} else if length < 6 {
		fmt.Println("刚刚能用")
	} else if length < 18 {
		fmt.Println("生活和谐")
	} else {
		fmt.Println("太特么大了")
	}
}

嵌套

package main

import "fmt"

func main() {
	fmt.Println("欢迎致电10086,1.话费相关;2.业务办理;3.人工服务。")

	var number int
	fmt.Scanln(&number)

	if number == 1 {
		fmt.Println("话费服务,1.交话费;2.查询。")
		var n1 int
		fmt.Scanln(&n1)
		if n1 == 1 {
			fmt.Println("缴话费啦")
		} else if n1 == 2 {
			fmt.Println("查话费了")
		} else {
			fmt.Println("输入错误")
		}
	} else if number == 2 {
		fmt.Println("业务办理")
	} else if number == 3 {
		fmt.Println("人工服务")
	} else {
		fmt.Println("输入错误")
	}
	
	// 建议:条件的嵌套不要太多
}