Go基础知识

本文详细介绍了Go语言的基础知识,包括变量的声明与初始化,常量的定义,算术、关系、逻辑和位运算符的使用,条件语句(if和switch)以及循环语句(for)的语法和应用。此外,还涵盖了数组的定义、初始化及访问操作。通过示例代码,帮助读者理解Go语言的基本编程概念。
摘要由CSDN通过智能技术生成

Go基础知识

参考:网址

变量

// 变量相关内容
func test01() {
	// 变量
	var a string = "wxx" // 等价于 var a = "wxx"
	fmt.Println(a)
	var b, c int = 1, 2 // 等价于 var b, c = 1, 2
	fmt.Println(b, c)
	// 未初始化的变量
	var d int
	var e float64
	var f bool
	var g string
	fmt.Printf("%v %v %v %q\n", d, e, f, g) // 0 0 false ""
	// 另一种定义局部变量的方式
	h := 50
	fmt.Println(h)
	x, y, z := 5, false, "abc"
	fmt.Println(x, y, z)
	// _是一个只写变量,你不能得到它的值
	// 这样做是因为 Go 语言中你必须使用所有被声明的变量,但有时你并不需要使用从一个函数得到的所有返回值。
	_, i := 1, 3
	fmt.Println(i)
}

常量

// 常量
func test02() {

	const PI = 3.14
	fmt.Println(PI)

	const (
		a = "abc"
		b = len(a)
		c = unsafe.Sizeof(a)
	)
	fmt.Println(a, b, c)

	// iota ?
}

运算符

func test03() {

	fmt.Println("============算术运算符============")
	var a = 21
	var b = 10
	var c int
	c = a + b
	fmt.Printf("a + b = %d\n", c)
	c = a - b
	fmt.Printf("a - b = %d\n", c)
	c = a * b
	fmt.Printf("a * b = %d\n", c)
	c = a / b
	fmt.Printf("a / b = %d\n", c)
	c = a % b
	fmt.Printf("a %% b = %d\n", c)
	a++
	fmt.Printf("a++ = %d\n", a)
	a = 21 // 为了方便测试,a 这里重新赋值为 21
	a--
	fmt.Printf("a-- = %d\n", a)

	fmt.Println("============关系运算符============")
	a, b = 21, 10
	if a == b {
		fmt.Printf("a 等于 b\n")
	} else {
		fmt.Printf("a 不等于 b\n")
	}
	if a < b {
		fmt.Printf("a 小于 b\n")
	} else {
		fmt.Printf("a 不小于 b\n")
	}
	if a != b {
		fmt.Printf("a 不等于 b\n")
	} else {
		fmt.Printf("a 等于 b\n")
	}

	fmt.Println("============逻辑运算符============")
	x, y := true, false
	if x && y {
		fmt.Println("条件为 true")
	} else {
		fmt.Println("条件为 false")
	}
	if x || y {
		fmt.Println("条件为 true")
	} else {
		fmt.Println("条件为 false")
	}
	if !y {
		fmt.Println("条件为 true")
	} else {
		fmt.Println("条件为 false")
	}

	fmt.Println("============位运算符============")
	var p uint = 60 /* 60 = 0011 1100 */
	var q uint = 13 /* 13 = 0000 1101 */
	var r uint = 0

	r = p & q
	fmt.Printf("p & q = %d\n", r) // 12

	r = p | q
	fmt.Printf("p & q =  %d\n", r) // 61

	r = p ^ q
	fmt.Printf("p & q =  %d\n", r) // 49

	r = p << 2
	fmt.Printf("p << 2 = %d\n", r) // 240

	r = p >> 2
	fmt.Printf("p >> 2 = %d\n", r) // 15

	fmt.Println("============赋值运算符============")
	var s int = 21
	var t int

	t = s
	t += s
	t -= s
	t *= s
	t /= s
	fmt.Printf("t = %d\n", t)

	t = 200

	t <<= 2
	t >>= 2
	t &= 2
	t ^= 2
	t |= 2
	fmt.Printf("t = %d\n", t)

	fmt.Println("============其他运算符============")
	var d int = 4
	var e int32
	var f float32
	var ptr *int

	/* 运算符实例 */
	fmt.Printf("d 变量类型为 = %T\n", d)
	fmt.Printf("e 变量类型为 = %T\n", e)
	fmt.Printf("f 变量类型为 = %T\n", f)

	/*  & 和 * 运算符实例 */
	ptr = &d // 'ptr' 包含了 'd' 变量的地址
	fmt.Printf("d 的值为  %d\n", d)
	fmt.Printf("*ptr 为 %d\n", *ptr)
}

条件语句

func test04() {

	// if
	var a = 100

	fmt.Printf("a 的值为 : %d\n", a)

	if a < 20 {
		fmt.Printf("a 小于 20\n")
	} else {
		fmt.Printf("a 不小于 20\n")
	}

	// switch
	grade := "B"
	var marks = 90

	switch marks {
	case 90:
		grade = "A"
	case 80:
		grade = "B"
	case 50, 60, 70:
		grade = "C"
	default:
		grade = "D"
	}
	fmt.Printf("你的等级是 %s\n", grade)
}

循环语句

func test05() {

	// 普通用法
	sum := 0
	for i := 0; i <= 10; i++ {
		sum += i
	}
	fmt.Println(sum)

	 无限循环
	//sum = 0
	//for {
	//	sum++ // 无限循环下去
	//}
	//fmt.Println(sum) // 无法输出

	// for-each range 循环
	strs := []string{"i", "love", "you"}
	for i, s := range strs {
		fmt.Println(i, s)
	}
	nums := [6]int{1, 2, 3, 5}
	for i, x := range nums {
		fmt.Printf("nums[%d] = %d\n", i, x)
	}
}

数组

func test06() {

	// 定义数组
	var a [5]float32
	fmt.Println(a) // [0 0 0 0 0]

	// 定义并初始化数组
	var b = [5]float32{13.14, 2.0, 3.4, 7.0, 50.0}
	fmt.Println(b)

	c := [5]float32{13.14, 2.0, 3.4, 7.0, 50.0}
	fmt.Println(c)

	// 自动推断数组长度
	d := [...]float32{13.14, 2.0, 3.4, 7.0, 50.0}
	fmt.Println(d)

	// 指定位置初始化
	e := [5]float32{1: 3.14, 3: 5.21}
	fmt.Println(e) // [0 3.14 0 5.21 0]

	// 访问数组元素
	var nums [3]int
	for i := 0; i < len(nums); i++ {
		nums[i] = i + 100
	}
	for i := 0; i < len(nums); i++ {
		fmt.Printf("nums[%d] = %d\n", i, nums[i])
	}
}

函数

func test07() {

	res := max(100, 200) // 只有一个返回值
	fmt.Printf("最大值: %d\n", res)
	a, b := swap("i", "you") // 有多个返回值
	fmt.Println(a, b)
}

func max(a int, b int) int {
	var res int
	if a > b {
		res = a
	} else {
		res = b
	}
	return res
}

func swap(a, b string) (string, string) {
	return b, a
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值