Go语言基础笔记(一)配置环境、变量声明、函数、条件语句、for循环、defer

本文为自学go语言之余做的笔记,以基础语法为主,防止以后使用的时候忘记一些基础语法,希望对大家也有用。

go语言的环境配置类似java,可参考:Go 语言环境安装 | 菜鸟教程

开发工具一般都是用jetbrains旗下的goland。

1、变量声明的几种方式:

package main

import "fmt"

func main() {
	//变量声明
	var s string
	s = "123"
	fmt.Println(s)

	//快捷变量声明
	var s1, s2 string
	s1 = "123"
	s2 = "456"
	fmt.Println(s1, s2)

	//简短变量声明
	s3 := "1234"
	fmt.Println(s3)
}

2、函数:

package main

import "fmt"

func main() {
	//printString("123")
	//addNumber(1,2)
	//calculateNumber(1,2)
	//showNumber(1,2,3)
	//sayHello()
	//feedMe(1,0)
	//把addNumbers这个函数当作变量传入otherFunction这个函数中进行处理
	print(otherFunction(addNumbers, 1, 2, 3))
}

// 无返回值
func printString(str string) {
	println(str)
}

// 返回一个值
func addNumber(i1 int, i2 int) int {
	return i1 + i2
}

// 返回多个值
func calculateNumber(i1 int, i2 int) (int, int) {
	sum := i1 + i2
	subtraction := i1 - i2
	return sum, subtraction
}

// 定义不定参数函数
func showNumber(numbers ...int) {
	//go语言中,如果定义的变量没有被使用,就会报错,因此不需要使用的变量用_,占位
	for _, number := range numbers {
		println(number)
	}
}

// 具名返回值 增加代码可读性
func sayHello() (x, y string) {
	x = "hello"
	y = "world"
	return x, y
}

// 递归调用
func feedMe(food int, eaten int) int {
	eaten = food + eaten
	if eaten >= 5 {
		fmt.Printf("我吃饱了,我已经吃了 %d\n", eaten)
		return eaten
	}
	fmt.Printf("我还没吃饱,我已经吃了 %d\n", eaten)
	return feedMe(food, eaten)
}

// 函数作为参数传入另一个函数
func otherFunction(f func(numbers ...int) int, a int, b int, c int) int {
	return f(a, b, c)
}
func addNumbers(numbers ...int) int {
	total := 0
	for _, number := range numbers {
		total += number
	}
	return total
}

3、条件语句

package main

import "fmt"

func main() {
	//println(isEven(3569))
	//elseif(2)
	switchCase(1)
}

// 判断奇数偶数 if else
func isEven(a int) bool {
	if a%2 == 0 {
		return true
	} else {
		return false
	}
}

// if elseif
func elseif(i int) {
	if i == 3 {
		fmt.Println("i等于3")
	} else if i == 2 {
		fmt.Println("i等于2")
	} else {
		fmt.Println("i既不等于3也不等于2")
	}
}

func switchCase(i int) {
	switch i {
	case 3:
		fmt.Println("i等于3")
		break
	case 2:
		fmt.Println("i等于2")
		break
	default:
		fmt.Println("i既不等于3也不等于2")
		break

	}
}

4、for循环

package main

import "fmt"

func main() {

	//for循环1
	i := 0
	for i < 10 {
		i++
		fmt.Println("i是", i)
	}
	//for循环2
	for i := 0; i < 10; i++ {
		fmt.Println("i是", i)
	}
	//for循环3 range
	numbers := []int{1, 2, 3, 4}
	for i, number := range numbers {
		fmt.Println("索引值", i)
		fmt.Println("数组中的值", number)
	}

}

5、defer:

被defer所修饰的函数会在其他函数执行后,再执行,通常用于执行清理菜操作或确保操作完成后再执行另一个函数。

package main

import "fmt"

func main() {
	//defer 函数返回前执行另一个函数
	defer fmt.Println("我在所有的函数执行完,再执行")
	fmt.Println("Hello world1")
	fmt.Println("Hello world2")
}

 被defer所修饰的函数的执行顺序是,先顺序执行其他函数,其他函数执行完之后,再逆序执行被defer所修饰的函数,如图:

package main

import "fmt"

func main() {
	//defer执行顺序
	defer fmt.Println("我是第一个defer声明")
	defer fmt.Println("我是第二个defer声明")
	defer fmt.Println("我是第三个defer声明")
	defer fmt.Println("Hello world")
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值