GO语言初识

初识包管理

关于包管理的总结:

  • 一个文件夹可以称为一个包。
  • 在文件夹(包)中可以创建多个文件。
  • 在同一个包下的每个为文件中必须指定 包名称且相同

重点:关于包的分类

  • main包,如果是main包,则必须写一个main函数,此函数就是项目的入口(main主函数)。 编译生成的就是一个可执行文件。
  • 非main包,用来将代码进行分类,分别放在不同的包和文件中。
  • 注意:

  • 调用其他包的功能,需要先 import 导入,然后再使用;调用自己包中的功能时,直接调用即可(无需导入)

  • 文件中的函数首字母是小写,表示此函数只能被当前包内部文件调用。首字母是大写,则意味着任何包都可以调用。

输出

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

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

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

package main

import "fmt"

func main() {
	// 基于内置函数(不推荐)
	//print("好吃不过饺子 \n")
	//print("好玩不过嫂子 \n")
	//println("好吃不过饺子")
	//println("好玩不过嫂子")

	// fmt包(推荐)
	//fmt.Print("好吃不过饺子 \n")
	//fmt.Print("好玩不过嫂子 \n")
	//fmt.Println("好玩不过嫂子")
	//fmt.Println("好玩不过嫂子")
	//fmt.Println("我叫", "sk", "我媳妇", "是个", "....")
	//fmt.Println("我叫sk我媳妇是个....")

	// fmt包 扩展:格式化输出
	// %s,占位符 "文本"
	// %d,占位符 整数
	// %f,占位符 小数(浮点数)
	// %.2f,占位符 小数(保留小数点后2位,四舍五入)
	// 百分比
	fmt.Printf("老汉开着%s,去接%s的媳妇,多少钱一次?%d块。嫂子给打折吧,%.2f怎么样?小哥哥包你100%%满意", "车", "老男孩", 100, 3.889)
}

数据类型

  • 整型,整数
  • 字符串,文本
  • 布尔型,真假
    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("qcw")
    	fmt.Println("钓鱼要掉刀鱼,刀鱼到岛上钓")
    	fmt.Println("qcw" + "SB")
    	//fmt.Println("qcw" + 666)
    	fmt.Println("qcw" + "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("sk" == "sb")
    
    	// 超前
    	if 2 > 1 {
    		fmt.Println("叫爸爸")
    	} else {
    		fmt.Println("孙子")
    	}
    
    }

    变量

变量可以理解为昵称,用于代表某一个数据类型。变量的声明有两种形式:先声明后赋值、声明的同时进行赋值。

声明 + 赋值

var sd string = "lemonade"
fmt.Println(sd)

var age int = 73
fmt.Println(age)

var flag bool = true
fmt.Println(flag)

先声明后赋值

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

声明变量的意义?

  1. 编写代码省事
  2. 存储结果,方便之后使用
  3. 存储用户输入的值
    var name string
    fmt.Scanf("%s", &name) // 用户输入字符串并赋值给name变量
    if name == "qcw" {
        fmt.Println("用户名输入正确")
    } else {
        fmt.Println("用户名输入失败")
    }

    变量名要求

  • 变量名必须只包含:字母、数字、下划线
  • 数字不能开头
  • 不能使用go语言内置的关键字
  • var %1 string,错误
    var $ string,错误
    var 1 string  错误
    var 1name string  错误
    var _ string 正确
    var var string = "南通州北通州南北通州通南北"  错误

    go语言关键字:break、default、func、interface、select、case、defer、go、map、struct、chan、else、goto、package、switch、const、fallthrough、if、range、type、continue、for、import、return、var(无需特别记忆)

  • 建议:变量名见名知意:name/age/num ; v1、v2、v3                                                                         驼峰式命名:myBossName / startDate

变量简写

声明+赋值

var name string = "qcw"

var name = "qcw"

name := "qcw"  // 推荐

先声明再赋值

var name string
var message string
var data string

var name,message,data string
name = "qcw"
message = "中奖了"
data = "中了5000w"

因式分解法、例如:声明5个变量,分别有字符串、整型

var (
    name   = "sk"
    age    = 18
    hobby  = "大保健"
    salary = 1000000
    gender string  // 只声明但不赋值,有一个默认: ""
    length int     // 只声明但不赋值,有一个默认: 0
    sb bool     // 只声明但不赋值,有一个默认: false
)
fmt.Println(name, age, hobby, salary, gender,length,sb)

此外,go语言中如果声明了变量但不使用,就会认为产生了一个错误,从而报错

作用域

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

  • 不能被上级使用。
  • 可以在同级使用。
  • 可以再子级使用。
  • package main
    
    import "fmt"
    
    func main() {
    	name := "qcw"
    	fmt.Println(name)
    	if true {
    		age := 18
    		name := "alex"
    		fmt.Println(age)
    		fmt.Println(name)
    	}
    	fmt.Println(name)
    }

    全局变量和局部变量

  • 全局变量,未写在函数中的变量称为全局变量;不可以使用v1:=xx方式进行简化;可以基于因式分解方式声明多个变量;项目中寻找变量时最后一环。
  • 局部变量,编写在{}里面的变量;可以使用任意方式简化;可以基于因式分解方式声明多个变量;
    package main
    
    import "fmt"
    
    // 全局变量(不能以省略的方式)
    var school string = "lemonade" // 可以
    //var school = "lemonade" 	 // 可以
    //school := "lemonade"  		 // 不可以
    
    var (
    	v1 = 123
    	v2 = "你好"
    	v3 int
    )
    
    func main() {
    
    	name := "qcw" // 局部变量
    	fmt.Println(name)
    	if true {
    		age := 18      // 局部变量
    		name := "sk" // 局部变量
    		fmt.Println(age)
    		fmt.Println(name)
    	}
    	fmt.Println(name)
    	fmt.Println(school)
    	fmt.Println(v1, v2, v3)
    }

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值